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.

Workflow size and specificity

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.

Different pipelines should not overlap one another too much. For example, having multiple choices for tools and parameters to do the same tasks should be contained in a single pipeline with varying parameters. However, if the purpose of the pipeline tasks and results are different, then this should be a separate pipeline.

The above instructions are subject to interpretation and specific scenarios. If in doubt, please ask the community for feedback on Slack.

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: