| name | reana-workflows |
| description | Use when the user is AUTHORING a new `reana.yaml` from scratch — picking an engine (serial / cwl / yadage / snakemake), declaring inputs / workflow / outputs, parameterising steps, and walking the `validate → create → upload → start → download` cycle for the first time. Pairs with `reference/schema.md` for field-level details and `reference/engines.md` for engine templates. Does NOT cover triaging an already-running workflow on the cluster (use `reana`) or grid submission outside REANA. Disambiguator phrase: reana.yaml authoring cycle. |
Scope
Use this skill when the user is authoring or launching a REANA
workflow — writing a reana.yaml from scratch, porting an existing
analysis, or walking the full create → upload → start → download
cycle for the first time.
For inspecting an already-running workflow (status, logs,
workspace triage, downloads), use the reana skill instead. The two
skills share the auth/CLI setup; this one assumes the user can
already reana-client ping successfully.
Write operations (create, upload, start, open) need explicit
user confirmation. stop, delete, rm, prune are denied by
default in opencode permissions.
Reference files (read on demand)
For CLI subcommand flags not covered below, see the sibling reana
skill's reference/commands.md.
Prereqs
Assume the user already has reana-client on PATH,
REANA_SERVER_URL + REANA_ACCESS_TOKEN exported, and reana-client ping prints OK. If not, send them to the reana skill first.
On CVMFS:
source /cvmfs/sw.escape.eu/reana/0.9.3/setup-minimal.sh
Anatomy of a reana.yaml
Every REANA workflow is declared in a single reana.yaml at the repo
root. Four sections matter:
version: 0.9.0
inputs:
files: [...]
directories: [...]
parameters: {...}
workflow:
type: serial | cwl | yadage | snakemake
specification: ...
file: path/to/spec
outputs:
files: [...]
directories: [...]
Optional top-level sections: workspace.retention_days (auto-clean
paths after N days), and engine-specific bits under
inputs.options. Full schema in reference/schema.md.
The four engines at a glance
| Engine | workflow.type | Spec lives in | Use when |
|---|
| Serial | serial | inline workflow.specification | Linear pipelines; the 90 % default |
| Snakemake | snakemake | external Snakefile | DAG with Python-flavoured rules |
| CWL | cwl | external workflow.cwl | Cross-platform portability is required |
| Yadage | yadage | external workflow.yaml (adage) | HEP-style packtivity graphs |
Pick serial unless the user has an existing Snakefile / CWL / Yadage
spec. For engine templates, read reference/engines.md.
Minimal serial template
version: 0.9.0
inputs:
files:
- code/analysis.py
parameters:
channel: "Zee"
nevents: 10000
workflow:
type: serial
specification:
steps:
- name: run
environment: "docker.io/rootproject/root:6.30.04-ubuntu22.04"
kubernetes_memory_limit: "512Mi"
commands:
- mkdir -p results
- python code/analysis.py --channel ${channel} --nevents ${nevents} --out results/hist.root
outputs:
files:
- results/hist.root
Parameters declared in inputs.parameters are substituted as
${name} in commands. Override them at launch with reana-client start -p name=value.
End-to-end: build, run, download
The five canonical commands. Items marked ⚠️ need user confirmation.
reana-client validate -f reana.yaml
reana-client create -f reana.yaml -n <workflow-name>
export REANA_WORKON=<workflow-name>
reana-client upload
reana-client start
reana-client status --include-progress
reana-client logs --filter step=<step>
reana-client download
reana-client create returns immediately; start also returns
immediately and the workflow runs asynchronously. Always status
before assuming completion.
Parameter overrides
Three layers, increasing priority:
- defaults in
inputs.parameters in reana.yaml
- a YAML file passed via
reana-client start -f params.yaml
- explicit
-p key=value flags on start (wins)
reana-client start -p nevents=100000 -p channel=Zmumu
Re-running with tweaked inputs
reana-client upload <changed-file>
reana-client start
reana-client list --filter name=<workflow-name>
Each start produces a new .run_number suffix you can target with
-w <name>.<n>.
Authoring workflow
- Pick the engine (usually serial; only pick others if the user
already has that spec).
- Draft
reana.yaml using the matching template from
reference/engines.md. Pin container images
with digests (image@sha256:...) if the workflow is meant to be
reproducible long-term; moving tags like :latest are fine for
iteration but warn the user before a final run.
reana-client validate -f reana.yaml before anything else —
catches most schema mistakes locally without consuming quota.
- First run small: override
nevents / input sizes with -p to
get a minutes-scale smoke test before committing to the full job.
- Iterate: edit
reana.yaml, re-validate, re-create (with
a new name or rely on auto-incremented run numbers), re-start.
- Download outputs declared under
outputs.files /
outputs.directories.
Pitfalls
Verification
A successful use of this skill ends with either:
- a validated
reana.yaml plus a uuid returned by create and a
status printed by reana-client status (for launch intent); or
- a committed, reviewed
reana.yaml that the user can run later (for
authoring-only intent). In both cases, confirm the container images
and parameter names before handing back.