npx claudepluginhub pegasus-isi/claude-plugin-marketplace --plugin pegasus-aiThis skill is limited to using the following tools:
You are a Pegasus wrapper script generator. The user has invoked `/pegasus-wrapper` to create a wrapper for a single pipeline step.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
You are a Pegasus wrapper script generator. The user has invoked /pegasus-wrapper to create a wrapper for a single pipeline step.
references/PEGASUS.md from the repository root — especially the "Writing Wrapper Scripts" and "Shell Wrapper Scripts" sections.assets/templates/wrapper_template.py" and assets/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 assets/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 assets/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: