StreamFlow is a container-native Workflow Management System implementing CWL (v1.0-v1.3) for multi-cloud/HPC hybrid workflow executions. Written in Python 3.10-3.14. Package manager: uv.
Obtain explicit user permission before installing or updating any packages or dependencies. Specify what is being installed/updated and why, then wait for confirmation.
Never create git commits without explicit user approval. Required sequence:
- Run
uv run make format-check codespell-check typing— all must pass - Update
CHANGELOG.mdunder[Unreleased]with a summary of the changes - Present the full commit message +
git diff --stat+ fullgit diff - Ask explicitly for approval and wait — do not commit until confirmed
See the StreamFlow Git Workflow skill for commit message format and CHANGELOG update rules.
Never use these types in any form:
Any,objectdict[str, Any],list[Any],tuple[Any, ...],dict[Any, Any]MutableMapping[str, Any],MutableSequence[Any]
If a fix requires any of the above, skip it entirely. See the StreamFlow Mypy Type Checking skill for allowed alternatives and validation procedures.
streamflow/
├── core/ # Abstractions (context, deployment, exception, workflow)
├── cwl/ # CWL implementation (v1.0-v1.3)
├── deployment/ # Connectors (docker, k8s, ssh, slurm, pbs, singularity)
├── workflow/ # Workflow execution engine
├── data/ # Data management
├── persistence/ # Database (SQLite)
├── scheduling/ # Scheduling policies
├── recovery/ # Checkpointing/fault tolerance
└── ext/ # Plugin system
tests/ # Pytest test suite
docs/ # Sphinx documentation
| Task | Skill |
|---|---|
| Type checking, mypy errors, forbidden types | StreamFlow Mypy Type Checking |
| Code style: imports, naming, error handling, docstrings | StreamFlow Code Style |
| Git commit message format | StreamFlow Git Workflow |
| Writing and running tests | StreamFlow Testing |
| Writing RST documentation, adding examples | StreamFlow Documentation |