بنقرة واحدة
pegasus-review
Review a Pegasus workflow for common pitfalls and best practices
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Review a Pegasus workflow for common pitfalls and best practices
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | pegasus-review |
| description | Review a Pegasus workflow for common pitfalls and best practices |
| allowed-tools | ["Read","Glob","Grep"] |
You are a Pegasus workflow reviewer. The user has invoked /pegasus-review.
Pegasus.md from the repository root for the full reference guide.workflow_generator.py).workflow_generator.pybin/ (wrapper scripts)Docker/* (Dockerfile)README.md (if it exists)run_manual.sh (if it exists)Evaluate the workflow against each category below. For each item, report one of:
Transformation(pfn=...) exists at that pathis_stageable=True for scripts on the submit host; is_stageable=False for scripts baked into the containerdocker://user/image:tag)TOOL_CONFIGS if present)transfer_input_files on the Transformation — NOT container mounts=[]. Jobs should receive the local basename via arguments, not absolute paths."file://" + os.path.abspath(path) (absolute paths with file:// prefix)infer_dependencies=True is used (recommended) OR all dependencies are explicitly declaredFile object used in add_outputs() of one job and add_inputs() of another uses the SAME File instance (not just the same string)stage_out=True only on final user-facing outputs; intermediate files use stage_out=Falseregister_replica=False is set on all add_outputs() calls (standard practice)_id values are unique across all jobs in the workflowadd_inputs(*all_files) collecting all upstream outputsFor each wrapper script, verify:
argparse arguments in the wrapper match the add_args() call in the workflow generator--input {filename} use the same filename string as the File() object's LFNos.makedirs(os.path.dirname(output), exist_ok=True) before writing to subdirectory pathsglob(), os.listdir(), or directory scanning to find input files between jobsos.path.dirname(__file__) to find support files — they use os.getcwd() insteadsys.exit(result.returncode))pegasus-analyzer)set -euo pipefailaction="append" or nargs="+" (not directory scanning)--threads arg matches cores=N profile)execution.site=local profilePYTHONUNBUFFERED=1 is set (ensures logs appear in real time)is_stageable=False, wrapper scripts are COPYed into the container and chmod +xworkflow_generator.py --help would produce useful output (argparse with descriptions)-s (skip sites), -e (execution site), -o (output)Output a structured report with this format:
## Pegasus Workflow Review: [workflow_name]
### Summary
- Errors: N
- Warnings: N
- Suggestions: N
### Errors
1. [ERROR] Category: description of the issue
File: path/to/file:line_number
Fix: what to change
### Warnings
1. [WARNING] Category: description
File: path/to/file:line_number
Fix: recommendation
### Suggestions
1. [SUGGESTION] Category: description
Rationale: why this would help
When reviewing, you can compare against the example workflows in examples/:
workflow_generator_tnseq.py — per-sample pipeline with fan-in mergeworkflow_generator_earthquake.py — API-fetch + region-loop patternworkflow_generator_mag.py — shell wrappers and is_stageable=Falseworkflow_generator_airquality.py — dual pipeline, skip flags, mergeFull repositories for deeper comparison:
Convert a Snakemake or Nextflow pipeline to a Pegasus workflow
Generate a Dockerfile for a Pegasus workflow's tool stack
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
Generate a wrapper script for a single Pegasus pipeline step