Skip to content
cccskills
FreePublished on GitHub

rseng-publishing-releasing

Covers the release lifecycle of research software: preparing and cutting versioned releases with changelogs, versioning schemes, release automation and minting a DOI per release. Use when the user asks how to tag a v1.0.0 release, write release notes or a changelog, pick a versioning scheme (SemVer or CalVer), automate releases, or mint a release DOI. (Channel craft for PyPI/CRAN/conda and registries is rseng-software-publishing; long-term preservation is rseng-archiving.)

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24 stars(GitHub 24 + cccskills 0)
Works withGitLabDocker

Run score Not tested

See how to install

Files included (2)

  • SKILL.md8.8 KB
  • references.md529 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

Publishing, packaging, releasing and archiving software

Use this skill when helping someone move research software from a working repository to something others can find, install, run, cite, and rely on years from now. These are four distinct stages that people routinely conflate; get the vocabulary straight first, then follow the stage the user actually needs.

Distinguish the four stages

Keep these separate when advising - they answer different questions:

  • Publishing - making software available so others can find, use, and cite it. Putting code on GitHub/GitLab is the start, not the whole job.
  • Packaging - preparing the software so others can install and run it with a single command or download (structure, config files, metadata).
  • Releasing - packaging one specific stable version for people to download and run, tagged with a version number.
  • Archiving - long-term preservation independent of any one platform, so the exact software survives even if a hosting service disappears.

Publishing is the umbrella; packaging, releasing, and archiving are the concrete sub-tasks that make a publication findable, installable, and durable.

Publishing: the end-to-end order

Publishing is more than pushing to a public repo. Walk these tasks in this order, because each depends on the previous ones:

  1. Write release notes, a changelog, and usage instructions.
  2. Add metadata for discoverability, and capture dependencies and environments (containers, environment files, or workflow systems) so the release is reproducible.
  3. Choose and apply an appropriate open license (delegate to the licensing skill for selection).
  4. Add citation files (CITATION.cff), contribution guidelines, and community practices to support reuse and credit.
  5. Version and release a stable, installable build - as a package in a registry, or by tagging an official release in the code repository.
  6. Archive the release (Zenodo or Software Heritage) with a DOI.

Treat this list as the checklist for "is this really published, or just pushed?" Anything missing above is a gap to flag.

Packaging: choose the distribution channel

Pick the channel by how users need to consume the software:

  • Just sharing source and history, or a first open release -> a code hosting platform (GitHub, GitLab, BitBucket). This is the hub even when users ultimately install from elsewhere; source and development history live here, and releases can be tagged with notes and downloadable archives.
  • Users need to install and reuse the code from their own environment -> a language or discipline package registry. Match the ecosystem: PyPI (Python), CRAN (R), npm (JavaScript), conda-forge (multi-language), Maven Central (Java). These give one-command installs, versioned distribution, and metadata-driven discoverability.
  • The software depends on many tools or a specific environment, or must run identically everywhere -> ship a container (Docker, SingularityCE) or publish a workflow to a hub (WorkflowHub, Dockstore). Containers bundle the runtime so users pull and run with no manual setup.

Whichever channel, package with a standard project structure, package config files (pyproject.toml, package.json, and equivalents), and metadata: version number, authors, dependencies, and license. A single project often uses several channels at once (source on GitHub, installable package on PyPI, container on a registry).

Releasing: version, changelog, tag

A release is a new or updated version made available to users; it is a phase in the development cycle, not a one-off upload. Do these:

  • Pick a versioning scheme and apply it consistently:
    • Semantic Versioning (e.g. 1.0.2) - communicates compatibility: MAJOR breaks the API, MINOR adds compatibly, PATCH fixes. Prefer this for libraries others build against.
    • Calendar Versioning (e.g. 24.10) - encodes the release date. Prefer this for tools released on a schedule where date matters more than API compatibility.
  • Maintain a changelog (release log): a running record of changes, published with the software at release time. Prepare it before starting the release, not after.
  • Write release notes: a short, non-technical summary of the changelog aimed at end users, distinct from the raw changelog.
  • Attach built artefacts (binaries, packages) to the release where useful.

Concrete GitHub release flow:

  1. Prepare the changelog ahead of time.
  2. In the repo, open Releases -> Draft a new release.
  3. Assign a unique version name/number under your chosen scheme.
  4. Add end-user-facing release notes.
  5. Publish release.
  6. If the repo is connected to Zenodo, publishing the release automatically mints a DOI for that version - enable this integration so citation and archiving happen in one step.

Archiving: preserve beyond the platform

Code on GitHub or GitLab is good for sharing and versioning but is not archiving: these are commercial services that can change policies, remove repos, or shut down, and research outputs go irreproducible within a few years when the original software vanishes. Archiving means preservation that does not depend on any single platform.

Why it matters: reproducibility of past experiments, preservation of the tools behind published results, compliance with Open Science mandates from funders and journals, and continued citation and reuse.

Address more than the source code when archiving:

  • Environment - capture compilers, libraries (NumPy, R packages), OS-level features, and architectures the software needs.
  • Build reproducibility - non-deterministic builds and missing historical dependencies make byte-for-byte rebuilds hard; document the build.
  • Versioning and provenance - record version history, commit hashes, and links to specific datasets and publications.
  • Legacy execution - for old software, plan for emulation or VM snapshots when containers are not enough (GUI or legacy apps).
  • Licensing - proprietary dependencies can legally limit what may be archived and shared.
  • Metadata and documentation - machine- and human-readable metadata, usage instructions, authorship, and configuration must travel with the archive.

Match the archival tool to the need:

  • Zenodo (or an institutional repository) - DOI-backed archiving of a release, linked to publications; the default for a citable snapshot.
  • Software Heritage - universal archive of source code and its full development history at scale.
  • ReproZip - captures the execution environment for portability.
  • Guix / NixOS - functional package managers for reproducible builds.
  • Containers (Docker, SingularityCE) - bundle app plus dependencies, common in HPC; VM snapshots when containerisation is not feasible.
  • RO-Crate - not an archive itself but the metadata format that keeps archived items (e.g. workflows) described, understandable, and reusable.

Rule of thumb: mint a DOI on Zenodo for the citable release, and register the source with Software Heritage for the full history; add environment-capture tools when exact re-execution is a requirement.

A concrete release stack (NLeSC python-template): setuptools-scm derives versions from git tags, bump-my-version manages the bump, and Zenodo integration mints a DOI wired to CITATION.cff on each GitHub release.

Working with this skill

The generated references.md beside this file lists the source material and pointers:

  • references.md - verified Learn more pointers

Learn more (verified):

<!-- related-skills:begin -->

Related skills

Check whether any of these applies before moving on:

  • rseng-archiving - preservation follows each release
  • rseng-ci-cd - release automation pipelines
  • rseng-citation-metadata - DOI and CITATION.cff at release
  • rseng-legacy-code - retire path needs tagged archive
  • rseng-license-compliance - notice obligations at release time
  • rseng-software-publishing - channel craft after cutting release
<!-- related-skills:end -->

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Covers operating AI coding agents securely: auditing whether the agent runs sandboxed, permission and dangerous-command configuration, containerized environments, secrets kept out of context, network egress and token privileges, prompt-injection risk, and the privacy of agent use itself. Use PROACTIVELY when permission gating is broadly disabled (skip-permissions modes), when secrets are visible to the agent's shell, or when the agent processes untrusted code, issues or web content; when a project holds personal or confidential data while a cloud agent is active (what leaves the machine, retention, training use), or when the user asks how to run coding agents safely or privately. (Supply-chain security: rseng-security; disclosing agent contributions: rseng-ai-declaration.)

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

Covers declaring AI involvement with the AI Declaration Format (https://ai-declaration.org): creating and maintaining an aidecl.yaml that records which AI tools and agents were used, what each contributed, when and how much, plus the README disclosure footnote, JSON/JSON-LD export and CI validation. Machine-readable disclosure is the practice; this format is one implementation. Use PROACTIVELY when an AI assistant or agent creates or modifies a project's content - generate aidecl.yaml if missing, update it after AI-assisted changes. Also use when the user asks about AI transparency, provenance, disclosure or EU AI Act disclosure, wants to state that NO AI was used, or mentions aidecl. For concealment requests see rseng-honesty; for the human review duty see rseng-human-verification.

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

Covers long-term archiving of research software and data: Software Heritage save requests and SWHID persistent identifiers, Zenodo deposits with versioned DOIs and forge integration, choosing domain and institutional repositories, deciding what to archive (code, data, environments, documentation) and when, and archiving at project retirement. Use when the user wants software or data preserved beyond the life of a forge account, grant or lab, mentions Software Heritage, SWHIDs, Zenodo deposits or archiving, retires or hands over a project, prepares artifacts that must stay resolvable for a paper, or when funder policy requires long-term preservation. (Cutting the release itself is rseng-publishing-releasing; day-to-day data storage and repository choice is rseng-data-management.)

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

Covers processing research data that outgrows one machine's memory: out-of-core and chunked computation, Dask for scaling the scientific Python stack, Spark for distributed tabular pipelines, lazy evaluation, partitioning strategies, idempotent and restartable batch jobs, and knowing when NOT to distribute. Use when datasets no longer fit in memory, when the user mentions Dask, Spark, out-of-core or larger-than-memory data, when a pandas/NumPy workflow hits memory limits, or when designing batch pipelines over many files. (Cluster job submission and job arrays are rseng-hpc-computing; pipeline orchestration engines are rseng-workflows; profile first with rseng-performance-profiling.)

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

Covers continuous integration and delivery for research software: CI/CD concepts, automating builds and tests with GitHub Actions and GitLab CI/CD, and wiring an organization's GitLab CI infrastructure to a GitHub-hosted project. Use when the user asks to set up CI, write a pipeline or workflow file (.github/workflows, .gitlab-ci.yml), add automated builds/tests on push or pull request, publish a package or deploy docs when a tag or release is cut, cache dependencies to speed up CI runs, choose between GitHub Actions and GitLab CI, use self-hosted or GPU runners, mirror a repo, or report external CI status back to GitHub. For what to test and shrinking a test matrix see rseng-testing; for linter and pre-commit policy see rseng-code-quality.

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

Covers verifying that every citation is real, correct and current: checking references in manuscripts, READMEs, references files and code metadata against Crossref and OpenAlex, screening cited DOIs against the Retraction Watch database, catching fabricated or mis-attributed citations (a documented AI failure mode), and keeping bibliographies and CITATION.cff files resolvable. Use PROACTIVELY before any bibliography, reference list or citation metadata is finalized or published, whenever the agent itself has produced citations, and when the user asks to check references, mentions broken DOIs, retracted papers or citation verification, or prepares a manuscript, README or software paper with references. (Making your own software citable is rseng-citation-metadata.)

The English summary is being prepared. Showing the original description.

fdiblen/rseng-agent-skills24Updated Sep 23, 2026

See all skills by fdiblen

Report a problem with this skill