Requirements for nf-core pipelines

The aim of nf-core is to have standardised best-practice pipelines. To ensure this standardisation, we maintain a set of guidelines which all nf-core pipelines must adhere to.

If you're thinking of adding a new pipeline to nf-core, please read the documentation about adding a new pipeline.

General rules

The instructions below are subject to interpretation and specific scenarios. If in doubt, please ask the community for feedback on the #new-pipelines Slack channel. You can join the nf-core Slack here.

Workflow size

We aim to have a "not too big, not too small" rule with nf-core pipelines. This is deliberately fuzzy, but as a rule of thumb workflows should contain at least three processes and be simple enough to run that a new user can realistically run the pipeline after spending ten minutes reading the docs. Pipelines should be general enough to be of use to multiple groups and research projects, but comprehensive enough to cover most steps in a primary analysis.

Workflow specificity

The nf-core community was founded to allow different groups to collaborate on pipelines instead of reinventing the same workflows in each institute. As such, different pipelines should not overlap one another too much: there should only be a single pipeline for a given data + analysis type. However, if the purpose of the pipeline tasks and results are different, then this should be a separate pipeline.

If you would like to use a different set of tools to do a comparable analysis, then this should be added to the existing pipeline instead of creating something new.

Minimum requirements

All nf-core pipelines must adhere to the following:

If possible, it's great if pipelines can also have:

Workflow name

All nf-core pipelines should be lower case and without punctuation. This is to maximise compatibility with other platforms such as Docker Hub, which enforce such rules. In documentation, please refer to your pipeline as nf-core/yourpipeline.

Coding style

The nf-core style requirements are growing and maturing over time. Typically, as we agree on a new standard we try to build a test for it into the nf-core lint command. As such, to get a feel for what's expected, please read the lint test error codes.

However, in general, pipelines must: