Galaxy Tool Development Standards and Best Practices#

Following the extensive efforts put in by developers from the Intergalactic Utilities Commission (IUC) into developing Galaxy tools over the years, we have collected the best practices below. We recommend them to the Galaxy tool developer community, both for contributing back to the IUC repository and for use in their own tool repositories.

Why you might read this#

If you need to maintain existing tools or develop new tools for Galaxy, this community-authored guide describes current best practices for building and maintaining automatically installable, reproducible Galaxy tools.

Definitions#

The key components involved in Galaxy tool development are:

  • Tool Shed: the Galaxy application repository. Tool Shed repositories support automated installation of tools and their associated components through the Galaxy administration interface.

  • Galaxy tool: an XML-defined interface and associated documentation that exposes a command-line application as a form-driven Galaxy tool. Tools should ideally be shared in a Tool Shed repository with revision-specific dependency requirements for reproducible analyses.

  • Data Manager: a tool that automates local maintenance of canonical reference data, such as reference genomes and application-specific indexes. Data Manager repository names should start with data_manager_.

Checklists#

Step-by-step lists to work through when preparing a tool.

Integration Checklist

A step-by-step checklist for getting a tool ready for the Tool Shed.

ToolShed Readiness Checklist
Tool Security Checklist

A security checklist for wrappers, inputs, commands, files, credentials, and downloads.

Tool Security Checklist
Remote Execution Checklist

A checklist for making tools work when jobs run remotely without a shared filesystem.

Remote Execution Checklist

Documentation#

Reference guides for the pieces that make up a tool and its repository.

Tool XML

Structure, macros, command sections, tests, and help for tool wrappers.

Tools
Tool Dependencies

Declaring dependencies with Conda, Bioconda, and containers.

Tool Dependencies
Data Managers

Stable data-table identifiers, reproducible downloads, paths, testing, and migrations.

Data Managers
Licensing and Use Restrictions

Licensing requirements, redistribution, declarations, and restricted dependencies.

Licensing and Use Restrictions
Repository Layout

How to organize files within a Tool Shed repository.

GitHub Repositories
.shed.yml

Metadata and configuration for Tool Shed repositories.

Toolshed Yaml File
Repository Management

Ongoing maintenance and release practices.

Repository Management on GitHub and the ToolShed

Galaxy Ecosystem#

Indices and tables#