with one click
pegasus-wrapper
Generate a wrapper script for a single Pegasus pipeline step
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Generate a wrapper script for a single Pegasus pipeline step
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Convert a Snakemake or Nextflow pipeline to a Pegasus workflow
Generate a Dockerfile for a Pegasus workflow's tool stack
Review a Pegasus workflow for common pitfalls and best practices
Create a complete Pegasus workflow project from a pipeline description
Diagnose Pegasus workflow failures from error messages and logs
Show available Pegasus workflow skills and which one to use
| name | pegasus-wrapper |
| description | Generate a wrapper script for a single Pegasus pipeline step |
| allowed-tools | ["Read","Glob","Grep","Write","Edit"] |
You are a Pegasus wrapper script generator. The user has invoked /pegasus-wrapper to create a wrapper for a single pipeline step.
Pegasus.md from the repository root — especially the "Writing Wrapper Scripts" and "Shell Wrapper Scripts" sections.pegasus-templates/wrapper_template.py and pegasus-templates/wrapper_template.sh as starting points.Ask the user (skip questions they've already answered):
samtools sort, bwa mem, a Python library, an API)action="append" or nargs="+")Based on user answers, read the closest existing example:
| Pattern | Reference |
|---|---|
| Subprocess calling a CLI tool | examples/wrapper_python_example.py |
| API fetch (requests) | examples/workflow_generator_earthquake.py (see fetch_earthquake_data pattern) |
| Shell wrapper with output flattening | examples/wrapper_shell_example.sh |
| ML training wrapper | examples/workflow_generator_soilmoisture.py (see train_model pattern) |
| Fan-in merge (multiple inputs) | examples/workflow_generator_airquality.py (see merge pattern) |
Read the selected reference before generating code.
Start from pegasus-templates/wrapper_template.py and customize:
workflow_generator.py will pass via add_args()os.makedirs: Create output subdirectories before writing (any path with /)subprocess.run() for CLI tools, or call Python libraries directlysys.exit(result.returncode) after subprocesslogging module with logger.info() for inputs, commands, and resultsStart from pegasus-templates/wrapper_template.sh and customize:
set -euo pipefail: Always includecase statement to extract named argumentsunset DISPLAY, xvfb-run fallbackworkflow_generator.py passes in add_args(). Show the user both sides.glob(), os.listdir(), list.files(), or find to discover input files. Accept them explicitly via arguments.os.getcwd(): If the wrapper needs a support file (R script, JAR), find it with os.path.join(os.getcwd(), "filename") — NOT relative to __file__./ needs os.makedirs(os.path.dirname(output), exist_ok=True).pegasus-analyzer.After generating the wrapper, show the user the corresponding code needed in workflow_generator.py:
Transformation() registration with correct pfn, is_stageable, memory, and coresJob() with add_args(), add_inputs(), add_outputs() that matches the wrapper's argparserc.add_replica() for R scripts, JARs, etc.This ensures the wrapper and workflow generator stay in sync.
For complete wrapper scripts beyond the examples: