Explanation from seqera AI
Why this convention exists:
Flexibility: Users can easily customize module behavior without modifying the module code itself
Separation of concerns: Module logic stays separate from parameter configuration
Reusability: The same module can be used with different parameters across different pipelines
Consistency: All nf-core modules follow the same pattern for optional arguments
What goes in ext.args vs. input channels:
Input channels: Mandatory non-file arguments that are essential for the tool to function (e.g., required modes, essential parameters)
ext.args: Optional flags, parameters with defaults, or any non-essential command-line options