Skip to content
Back to skills

Pipes External Processes

ASecurity

"Integrate Python and non-Python external processes with Dagster

  • 247 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
devopspythonkubernetesawsgcpazuredebuggingapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill pipes-external-processes --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pipes External Processes?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pipes External Processes
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-pipes-external-processes/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-pipes-external-processes)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pipes-external-processes
description: "Integrate Python and non-Python external processes with Dagster
  using dagster-pipes, open_dagster_pipes, PipesSubprocessClient, loaders,
  message writers, logs, materializations, checks, and custom messages."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Pipes External Processes

Use this sub-skill when external Python scripts, non-Python executables, notebooks, Spark jobs, or service-launched processes need to communicate back to Dagster through the Dagster Pipes protocol.

## Route Here

- Retrofitting external code to call `dagster_pipes.open_dagster_pipes()` and emit messages without importing `dagster`.
- Launching a local subprocess from a Dagster asset with `dagster.PipesSubprocessClient` and returning `get_materialize_result()`, `get_results()`, `get_asset_check_result()`, or `get_custom_messages()`.
- Choosing context and message transport pieces such as env vars vs CLI args, default file/stdout writers, temp-file readers, and blob-store writers.
- Reporting external logs, asset materializations, asset checks, custom messages, rich metadata dictionaries, partition context, run metadata, and extras.
- Debugging missing `DAGSTER_PIPES_*` bootstrap params, loader mismatches, duplicate materialization messages, closed contexts, or optional cloud transport dependencies.

## Route Elsewhere

- Designing the Dagster asset graph, `@asset`, `@multi_asset`, `@asset_check`, `Definitions`, and asset selections: use `../asset-definitions/SKILL.md`.
- Resource/config/secret modeling around subprocess credentials and environment variables: use `../configuration-resources/SKILL.md`.
- Dagster CLI execution, `dagster dev`, `dg`, project scaffolding, and code-location validation: use `../cli-local-development/SKILL.md`.
- Service-specific Pipes clients for Databricks, AWS, GCP, Kubernetes, or Spark libraries: use their integration-specific skill if present; otherwise treat this sub-skill as the generic protocol foundation only.

## Start Here

1. Read `references/workflows.md` for subprocess integration, external script retrofits, non-Python message emission, custom messages, and loader/writer choices.
2. Read `references/api-reference.md` for public `dagster_pipes` and `dagster` Pipes APIs, message payload shapes, and metadata formats.
3. Read `references/troubleshooting.md` for import failures, optional dependencies, missing bootstrap params, CLI/API misuse, and protocol-specific failures.
4. Run `python scripts/pipes_external_smoke.py --help` from this sub-skill directory, or `python scripts/pipes_external_smoke.py --inactive-demo`, to verify safe external-side behavior without launching Dagster.

## Fast Triage

- External code should usually import only `dagster_pipes`, not `dagster`; Dagster-side asset code imports `dagster as dg`.
- `open_dagster_pipes()` defaults to env-var params, default context loading, and default message writing; use `PipesCliArgsParamsLoader()` when the launcher passes `--dagster-pipes-context` and `--dagster-pipes-messages`.
- Return or yield the completed invocation results on the Dagster side; otherwise Pipes messages may be received but never surfaced as Dagster events.
- For multi-assets, pass `asset_key=` explicitly and materialize each asset key at most once in a single Pipes invocation.
- Cloud/blob writers and loaders are optional patterns; do not assume S3, GCS, Azure, DBFS, Spark, or Databricks packages are installed unless the user environment proves them.

Files in this skill

  • SKILL.md3.5 KB
  • references/api-reference.md9 KB
  • references/troubleshooting.md9.1 KB
  • references/workflows.md8.5 KB
  • scripts/pipes_external_smoke.py3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.