Turn CWL workflows into documentation, diagrams, metadata, and service descriptions.
Transpiler-Mate is a collection of open-source tools built around Common Workflow Language (CWL). Describe your workflow and its software metadata once, then use independent plugins to generate the artifacts you need to document, share, and publish it.
Explore the repositories · Get started · Build a plugin
| Task | Project | What it provides | Documentation |
|---|---|---|---|
| Document workflows | cwl2markdown | Markdown pages with workflow details and software metadata. | Docs |
| Visualize workflows | cwl2puml | PlantUML diagrams, with optional PNG or SVG rendering. | Docs |
| Generate command-line interfaces | cwl2click | Python Click CLI scaffolding from CWL command-line tools. | Docs |
| Describe processing services | cwl2ogc | OGC API – Processes input/output descriptors and JSON Schemas. | Docs |
| Export software metadata | cwl2codemeta | CodeMeta JSON-LD derived from embedded Schema.org metadata. | Docs |
| Prepare citation metadata | cwl2datacite | DataCite metadata JSON for workflow software. | Docs |
| Annotate container images | cwl2oci | OCI image annotation JSON with software and CWL process metadata. | Docs |
| Publish research software | invenio-publish | Records, attachments, DOIs, and new versions in InvenioRDM or Zenodo. | Docs |
Use Python 3.10 or newer. Install the runtime and the plugins you need in the same Python environment:
python -m pip install transpiler-mate-runtime cwl2markdown cwl2puml
transpiler-mate --helpWith a CWL document containing the required Schema.org SoftwareApplication metadata, generate documentation and diagrams:
transpiler-mate cwl2markdown --output build/docs workflow.cwl
transpiler-mate cwl2puml --output build/diagrams workflow.cwlInstalled plugins become subcommands of transpiler-mate. Run transpiler-mate <plugin> --help for their options. See the cwl2markdown documentation for a complete metadata example, or explore the runtime documentation for loading and bundling CWL documents.
The runtime loads CWL documents, prepares a shared context, and discovers installed plugins. A separate API package defines the contracts that let plugins be developed and distributed independently.
| Project | Role | Documentation |
|---|---|---|
| transpiler-mate-runtime | The transpiler-mate CLI, plugin discovery and execution, source loading, and built-in CWL bundling. |
Docs |
| transpiler-mate-api | Shared plugin contracts and models for plugin authors and runtime implementations. | Docs |
| cwl-loader | Python utilities for loading, normalizing, and serializing CWL documents. | Docs |
These companion tools help prepare workflows before conversion or execution:
| Project | Role | Documentation |
|---|---|---|
| cwl-metadata-editor | A VS Code extension for editing Schema.org metadata directly in CWL files while preserving surrounding text and formatting. | Docs |
| assertions-mate | Input validation using JSON Schema, Rego policies, and CQL2 assertions embedded as CWL hints. | Docs |
Start with the transpiler-mate-plugin-project-template, a Copier template with Python packaging, tests, documentation, and CI. Implement the plugin API and register your package in the transpiler_mate.plugins entry-point group so the runtime can discover it.
Bug reports, examples, documentation improvements, and new plugins are welcome. Open an issue or pull request in the relevant repository, and follow its contribution and development instructions.
This .github repository hosts the organization's landing-page and profile content.