Help us improve
Share bugs, ideas, or general feedback.
From nf-core
Manages nf-core modules and subworkflows: create, install, update, patch, lint using nf-core CLI and nf-test. Includes migration roadmap and templates for Nextflow pipelines.
npx claudepluginhub jonasscheid/claude-nfcore-pluginHow this skill is triggered — by the user, by Claude, or both
Slash command
/nf-core:modulesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Manage modules and subworkflows: create, install, update, patch, and lint.
Manages nf-core Nextflow pipelines: create new pipelines, lint with strict syntax checks, build/validate/lint schemas, sync templates, run tests, and release. Ensures compliance with nf-core lifecycle and Q2 2026 deadlines.
Builds scalable containerized bioinformatics pipelines with Nextflow dataflow model: processes connected by channels, runnable on local, HPC (SLURM/SGE), cloud (AWS/GCP/Azure), or Kubernetes via config profiles. Powers nf-core pipelines.
Develops and deploys serverless bioinformatics workflows on LatchBio using the Latch SDK. Author workflows with decorators, manage cloud I/O, and wrap Nextflow/Snakemake pipelines.
Share bugs, ideas, or general feedback.
Manage modules and subworkflows: create, install, update, patch, and lint.
Read ${CLAUDE_PLUGIN_ROOT}/shared/conventions.md for nf-core conventions and package manager setup.
Read ${CLAUDE_PLUGIN_ROOT}/shared/module-template.md for module structure and templates.
Update this table as Nextflow and nf-core evolve. Last updated: Feb 2026.
| Feature | Enforce? | Allow in Linting | In Template | Required | Notes |
|---|---|---|---|---|---|
| Strict syntax | ENFORCE | — | Q2 2026 | Q2 2026 | CRITICAL deadline. Run nextflow lint . |
| Version topics in modules | ENFORCE | Q4 2025 | Mid-2026 | Mid-2026 | Already allowed by linting |
| Workflow output | Don't enforce | — | Mid-2026 | Q4 2026 | Coming soon |
| Static types & records | Don't enforce | Mid-2026 | Q4 2026 | Q2 2027 | Gradual rollout |
| New process syntax | Don't enforce | Mid-2026 | Q4 2026 | Q2 2027 | Gradual rollout |
Replace <cmd> with the configured package manager prefix (see Setup in conventions.md).
| Action | Command |
|---|---|
| List remote modules | <cmd> nf-core modules list remote |
| List installed modules | <cmd> nf-core modules list local |
| Module info | <cmd> nf-core modules info <module> |
| Install module | <cmd> nf-core modules install <tool/subtool> |
| Install specific version | <cmd> nf-core modules install <module> --sha <commit> |
| Create module | <cmd> nf-core modules create tool/subtool |
| Update module | <cmd> nf-core modules update <module> |
| Update all | <cmd> nf-core modules update --all |
| Preview updates | <cmd> nf-core modules update --preview |
| Create patch | <cmd> nf-core modules patch <module> |
| Remove patch | <cmd> nf-core modules patch <module> --remove |
| Lint module | <cmd> nf-core modules lint <module> |
| Lint all | <cmd> nf-core modules lint --all |
| Test module | <cmd> nf-test test modules/nf-core/<tool>/<subtool>/ |
| Action | Command |
|---|---|
| List remote | <cmd> nf-core subworkflows list remote |
| List installed | <cmd> nf-core subworkflows list local |
| Install | <cmd> nf-core subworkflows install <name> |
| Create | <cmd> nf-core subworkflows create |
| Update | <cmd> nf-core subworkflows update <name> |
| Update all | <cmd> nf-core subworkflows update --all |
| Lint | <cmd> nf-core subworkflows lint <name> |
| Test | <cmd> nf-test test subworkflows/nf-core/<name>/ |
Module naming: tool or tool/subtool, lowercase only. Examples: fastqc, bwa/mem, samtools/sort.
<cmd> nf-core modules create tool/subtool
See ${CLAUDE_PLUGIN_ROOT}/shared/module-template.md for the complete main.nf template, meta.yml structure, and container sources.
Process:
<cmd> nf-core modules lint tool/subtool<cmd> nf-core modules install <tool/subtool>
Installs to modules/nf-core/<tool>/<subtool>/.
Integration example:
include { FASTQC } from '../modules/nf-core/fastqc/main'
workflow MY_WORKFLOW {
take:
reads // channel: [ val(meta), path(reads) ]
main:
FASTQC ( reads )
emit:
zip = FASTQC.out.zip
html = FASTQC.out.html
}
Configure ext.args:
// conf/modules.config
process {
withName: FASTQC {
ext.args = '--quiet'
publishDir = [
path: { "${params.outdir}/fastqc" },
mode: params.publish_dir_mode,
saveAs: { filename -> filename.equals('versions.yml') ? null : filename }
]
}
}
<cmd> nf-core modules update <module> # Update one
<cmd> nf-core modules update --all # Update all
<cmd> nf-core modules update --preview # Preview only
<cmd> nf-core modules update <module> --force # Overwrite local changes
<cmd> nf-core modules update <module> --save-diff updates.patch # Save as patch
Modules are tracked in modules.json with git SHA and branch info.
Workflow: Preview → Update → Test → Commit
<cmd> nf-core modules update <module> --preview
<cmd> nf-core modules update <module>
<cmd> nf-test test modules/nf-core/<module>/
git add modules/nf-core/<module>/ modules.json && git commit -m "Update <module>"
Use patches to preserve local modifications across module updates.
When to patch vs. local module:
# 1. Install and modify module
<cmd> nf-core modules install fastqc
# Edit modules/nf-core/fastqc/main.nf
# 2. Create patch
<cmd> nf-core modules patch fastqc
# Creates modules/nf-core/fastqc/.nf-core-patch.yaml
# 3. On update, patch auto-applies
<cmd> nf-core modules update fastqc
Remove patch:
<cmd> nf-core modules patch fastqc --remove
Subworkflows combine multiple modules into reusable workflow units.
<cmd> nf-core subworkflows install bam_sort_stats_samtools
Installs to subworkflows/nf-core/<name>/ with main.nf, meta.yml, and tests/.
Usage:
include { BAM_SORT_STATS_SAMTOOLS } from '../subworkflows/nf-core/bam_sort_stats_samtools/main'
workflow {
BAM_SORT_STATS_SAMTOOLS ( bam_ch, fasta, fai )
}
<cmd> nf-core subworkflows create
Subworkflow main.nf structure:
include { MODULE_ONE } from '../../../modules/nf-core/module_one/main'
include { MODULE_TWO } from '../../../modules/nf-core/module_two/main'
workflow MY_SUBWORKFLOW {
take:
input_channel
reference
main:
ch_versions = channel.empty()
MODULE_ONE ( input_channel )
ch_versions = ch_versions.mix(MODULE_ONE.out.versions.first())
MODULE_TWO ( MODULE_ONE.out.result, reference )
ch_versions = ch_versions.mix(MODULE_TWO.out.versions.first())
emit:
result = MODULE_TWO.out.output
versions = ch_versions
}
<cmd> nf-core subworkflows update <name>
<cmd> nf-core subworkflows update --all
<cmd> nf-core subworkflows update --preview
subworkflows/nf-core/): Installed from nf-core/modules, managed by nf-core toolssubworkflows/local/): Pipeline-specific, manually maintained<cmd> nf-core modules lint <module> # Lint specific module
<cmd> nf-core modules lint --all # Lint all modules
<cmd> nf-core subworkflows lint <name> # Lint specific subworkflow
<cmd> nf-core subworkflows lint --all # Lint all subworkflows
:latest), ensure both Docker and Singularitypath("${prefix}.ext") not path("*.ext")lint:
modules:
- name: custom_module
tests:
- meta_yml
See ${CLAUDE_PLUGIN_ROOT}/shared/module-template.md for complete templates including: