Guidance for automated (Claude) and human PR reviews. Every check below comes from a problem that reached a PR before. The automated reviewer only sees the diff and cannot run the pipeline or nf-test, so it must never claim that tests pass or fail.
- PR CI runs only nf-test tests tagged
small(.github/workflows/nf-test.yml). Flag a new or changed test without that tag. Also flag a change whose code path nosmalltest exercises, e.g. module-only changes to Clair3, ClairS, ClairS-TO or LRSOMATICREPORT, and ask for the Slurm test array to be run. - A process with
errorStrategy 'ignore'can fail while its test still passes: the snapshot then records the failed (empty) state. Check that snapshots of such steps contain real outputs. - Snapshot changes should match the code change. Unexplained md5 drift in unrelated outputs needs an explanation in the PR.
- Channels carry
[meta, data]tuples; keepmetaintact across module/subworkflow boundaries and joins. Check that joins key on the right field and cannot pair records arbitrarily. - Process-scope variables in
script:blocks have nodefprefix. Unused closure parameters are prefixed with_. - Processes use resource labels (
process_single,process_medium, ...) rather than hard-coded resources. - A new step needs an entry in
conf/modules.config(publishDir,ext.args);versions.ymlshould not be published. - New or changed parameters are in
nextflow_schema.json, with ahelp_textthat matches the actual behaviour, and indocs/usage.md. - nf-core modules are installed/updated with
nf-core modules, not edited in place undermodules/nf-core/. Local changes belong inmodules/local/or as an nf-core module patch, andmeta.ymlis updated with inputs/outputs.
- The tests cover GRCh38 only. Check that new logic also works for CHM13
(
--genomeCHM13 paths, chromosome naming, tool support for T2T) and for a custom--fastawithout an iGenomes entry. Watch forfile(null)orparams.genomes[...]lookups that break on custom genomes. - Remote reference files fetched at run start (GitHub raw URLs, wget) are fragile; prefer staged or cached files.
- Container directives keep the singularity/docker ternary used across
modules/, with both branches pointing at the same tool version. Biocontainers use the depot.galaxyproject.org /biocontainers/pair; custom images use theoras://docker.io/...-sif/docker.io/...pair (Docker Hub, not ghcr, for large Apptainer images). - Images are pinned to a specific tag, never
latest.
CHANGELOG.mdhas an entry under thedevversion with the PR number.- New outputs are described in
docs/output.md; new tools are cited inCITATIONS.mdandREADME.md.
- Formatting that pre-commit/prettier fixes automatically.
- Files under
modules/nf-core/andsubworkflows/nf-core/unless the PR itself changes them. ro-crate-metadata.jsonchurn (regenerated by nf-core lint).