---
title: "dagster-io/skills"
description: "A collection of AI skills for working with Dagster"
source: https://github.com/dagster-io/skills
ref: master
license: Apache-2.0
licenseName: "Apache License 2.0"
canonical: https://skillsdocs.com/dagster-io/skills
base: https://github.com/dagster-io/skills/blob/master/
chapters: 2
inlined: 2
withheld: 0
words: 1127
updated: 2026-08-07T19:32:23Z
generator: "Skills Docs"
---

> **dagster-io/skills** — every Agent Skill in this repository, inlined verbatim.
>
> Canonical HTML: https://skillsdocs.com/dagster-io/skills
> Per-chapter Markdown: https://skillsdocs.com/dagster-io/skills/<skill>.md
> Machine manifest: https://skillsdocs.com/dagster-io/skills/.well-known/agent-skills/index.json
> JSON: https://skillsdocs.com/api/v1/books/dagster-io/skills
> Install: `npx skills add dagster-io/skills`
> Upstream: https://github.com/dagster-io/skills @ `master`
> Licence: Apache-2.0
>
> Content is mirrored from GitHub and © its authors, served unmodified. Takedown: https://github.com/DreambaseAI/skillsdocs/issues/new?labels=takedown&title=Takedown+request

# dagster-io/skills

A collection of AI skills for working with Dagster

- **Chapters:** 2
- **Inlined:** 2 (licence detected)
- **Words:** 1,127
- **Reading time:** 5 min
- **Stars:** 196

## Table of contents

1. [dagster-expert](https://skillsdocs.com/dagster-io/skills/dagster-expert.md) — Expert guidance for working with Dagster and the dg CLI. ALWAYS use before doing any task that requires knowledge specific to Dagster, or that references asset…
2. [dignified-python](https://skillsdocs.com/dagster-io/skills/dignified-python.md) — Opinionated production Python standards with automatic version detection (3.10-3.13). Use when writing, reviewing, or refactoring Python in repos that want mod…


## Front matter

_The repository README, verbatim except that relative links are resolved against https://github.com/dagster-io/skills/blob/master/._

<div align="center">
  <img width="auto" height="38px" alt="dagster-hearts-claude" src="https://github.com/user-attachments/assets/b162dddf-6a7e-459e-be06-29d34d637650" />
</div>

# Dagster Skills

AI assistant skills for building workflows and data pipelines using Dagster.

**Compatible with Claude Code, Cursor, OpenCode, OpenAI Codex, Pi, and other Agent Skills-compatible tools.**

## Installation

### Claude Code

Install using the
[Claude plugin marketplace](https://code.claude.com/docs/en/discover-plugins#add-from-github):

```
/plugin marketplace add dagster-io/skills

/plugin install dagster-expert@dagster

/dagster-expert "What's an asset?"
```


### Using `npx skills`

Install using the [`npx skills`](https://skills.sh/) command-line:

```bash
npx skills add dagster-io/skills
```

### Manual Installation

<details>
<summary>See full instructions...</summary>

Clone the repository and copy skills to your tool's skills directory:

**OpenCode:**

```bash
git clone https://github.com/dagster-io/skills.git
cp -r skills/skills/* ~/.config/opencode/skill/
```

**OpenAI Codex:**

```bash
git clone https://github.com/dagster-io/skills.git
cp -r skills/skills/* ~/.codex/skills/
```

**Pi Agent:**

```bash
git clone https://github.com/dagster-io/skills.git
cp -r skills/skills/* ~/.pi/agent/skills/
```

</details>

## Skills

### `dagster-expert`

Expert guidance for building production-quality Dagster projects, covering CLI commands, asset patterns, automation strategies, and implementation workflows.

**What you can do:**

- Create and scaffold projects, assets, schedules, and sensors
- Understand asset patterns (dependencies, partitions, multi-assets, metadata)
- Implement automation (declarative automation, schedules, sensors)
- Use CLI commands (launch, list, check, scaffold, logs)
- Design project structure and configure environments
- Follow implementation workflows and best practices
- Debug issues and validate project configuration

**Example prompts:**

```
Create a new Dagster project called analytics
How do I scaffold a new asset?
Show me how to set up declarative automation
What's the proper way to partition my assets?
Help me debug why my materialization failed
How should I structure my project for multiple pipelines?
Launch all assets tagged with priority=high
```

### `dignified-python`

Production-quality Python coding standards for modern Python.

Use for general Python code quality, not Dagster-specific patterns.

**What's included:**

- Modern type syntax (list[str], str | None)
- LBYL exception handling patterns
- Pathlib operations
- Python version-specific features (3.10-3.13)
- CLI patterns (Click, argparse)
- Advanced typing patterns
- Interface design (ABC, Protocol)
- API design principles

**Example questions:**

```
Is this good Python code?
How should I annotate this function?
What's the difference between LBYL and EAFP?
Should I use pathlib or os.path?
```

## Contributing

See [CONTRIBUTING.md](https://github.com/dagster-io/skills/blob/master/CONTRIBUTING.md).

<div align="center">
  <img alt="dagster logo" src="https://github.com/user-attachments/assets/6fbf8876-09b7-4f4a-8778-8c0bb00c5237" width="auto" height="16px">
</div>

---

<!-- chapter:begin slug=dagster-expert position=1 -->

## 1. dagster-expert

- **Source:** https://github.com/dagster-io/skills/blob/master/skills/dagster-expert/skills/dagster-expert/SKILL.md
- **Raw:** https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/SKILL.md
- **Markdown:** https://skillsdocs.com/dagster-io/skills/dagster-expert.md
- **Licence:** Apache-2.0 — https://spdx.org/licenses/Apache-2.0.html

Bundled files (172), referenced from this skill's directory:
  - `references/asset-selection.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/asset-selection.md
  - `references/assets/advanced-patterns.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/assets/advanced-patterns.md
  - `references/assets/definition-metadata.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/assets/definition-metadata.md
  - `references/assets/dependencies.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/assets/dependencies.md
  - `references/assets/INDEX.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/assets/INDEX.md
  - `references/automation/choosing-automation.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/choosing-automation.md
  - `references/automation/declarative-automation/advanced.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/advanced.md
  - `references/automation/declarative-automation/core-concepts.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/core-concepts.md
  - `references/automation/declarative-automation/customization.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/customization.md
  - `references/automation/declarative-automation/INDEX.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/INDEX.md
  - `references/automation/declarative-automation/operands.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/operands.md
  - `references/automation/declarative-automation/operators.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/declarative-automation/operators.md
  - `references/automation/schedules.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/schedules.md
  - `references/automation/sensors/asset-sensors.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/sensors/asset-sensors.md
  - `references/automation/sensors/basic-sensors.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/sensors/basic-sensors.md
  - `references/automation/sensors/run-status-sensors.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/automation/sensors/run-status-sensors.md
  - `references/cli/api/agent/get.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/agent/get.md
  - `references/cli/api/agent/INDEX.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/agent/INDEX.md
  - `references/cli/api/agent/list.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/agent/list.md
  - `references/cli/api/alert-policy/INDEX.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/alert-policy/INDEX.md
  - `references/cli/api/alert-policy/list.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/alert-policy/list.md
  - `references/cli/api/alert-policy/sync.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/alert-policy/sync.md
  - `references/cli/api/artifact/download.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/artifact/download.md
  - `references/cli/api/artifact/INDEX.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dagster-expert/skills/dagster-expert/references/cli/api/artifact/INDEX.md
  - …and 148 more, listed in https://skillsdocs.com/api/v1/books/dagster-io/skills/skills/dagster-expert

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: dagster-expert
description:
  Expert guidance for working with Dagster and the dg CLI. ALWAYS use before doing any task that requires
  knowledge specific to Dagster, or that references assets, materialization, components, data tools or data pipelines.
  Common tasks may include creating a new project, adding new definitions, understanding the current project structure, answering general questions about the codebase (finding asset, schedule, sensor, component or job definitions), debugging issues, or providing deep information about a specific Dagster concept.
---

## Core Dagster Concepts

Brief definitions only (see reference files for detailed examples):

- **Asset**: Persistent object (table, file, model) produced by your pipeline
- **Component**: Reusable building block that generates definitions (assets, schedules, sensors, jobs, etc.) relevant to a particular domain.

## Integration Workflow

When integrating with ANY external tool or service, read the [Integration libraries index](./references/integrations/INDEX.md). This contains information about which integration libraries exist, and references on how to create new custom integrations for tools that do not have a published library.

## dg CLI

The `dg` CLI is the recommended way to programmatically interact with Dagster (adding definitions, launching runs, exploring project structure, etc.). It is installed as part of the `dagster-dg-cli` package. If a relevant CLI command for a given task exists, always attempt to use it.

ONLY explore the existing project structure if it is strictly necessary to accomplish the user's goal. In many cases, existing CLI tools will have sufficient understanding of the project structure, meaning listing and reading existing files is wasteful and unnecessary.

Almost all `dg` commands that return information have a `--json` flag that can be used to get the information in a machine-readable format. This should be preferred over the default table output unless you are directly showing the information to the user.

## UV Compatibility

Projects typically use `uv` for dependency management, and it is recommended to use it for `dg` commands if possible:

```bash
uv run dg list defs
uv run dg launch --assets my_asset
```

## CRITICAL: Always Read Reference Files Before Answering

NEVER answer from memory or guess at CLI commands, APIs, or syntax. ALWAYS read the relevant reference file(s) from the Reference Index below before responding.

For every question, identify which reference file(s) are relevant using the index descriptions, read them, then answer based on what you read.

## Reference Index

<!-- BEGIN GENERATED INDEX -->

- [Asset Selection Syntax](./references/asset-selection.md) — filtering assets by tag, group, kind, upstream, or downstream; AssetSelection in Python, UI search bar, or CLI
- [Environment Variables](./references/env-vars.md) — configuring environment variables across different environments
- [Asset Patterns](./references/assets/INDEX.md) — defining assets, dependencies, metadata, partitions, or multi-asset definitions
- [Choosing an Automation Approach](./references/automation/choosing-automation.md) — deciding between schedules, sensors, and declarative automation
- [Schedules](./references/automation/schedules.md) — time-based automation with cron expressions
- [Declarative Automation](./references/automation/declarative-automation/INDEX.md) — asset-centric condition-based automation using AutomationCondition
- [Asset Sensors](./references/automation/sensors/asset-sensors.md) — triggering on asset materialization events
- [Basic Sensors](./references/automation/sensors/basic-sensors.md) — event-driven automation with file watching or custom polling
- [Run Status Sensors](./references/automation/sensors/run-status-sensors.md) — reacting to run success, failure, or other status changes
- [dg check](./references/cli/check.md) — validating project configuration or definitions
- [create-dagster](./references/cli/create-dagster.md) — creating a new Dagster project from scratch
- [dg dev](./references/cli/dev.md) — starting a local Dagster development instance
- [dg launch](./references/cli/launch.md) — materializing assets or executing jobs locally
- [dg list components](./references/cli/list-components.md) — seeing available component types for scaffolding
- [dg list defs](./references/cli/list-defs.md) — listing or filtering registered definitions
- [Dagster Plus API](./references/cli/api/INDEX.md) — dg api, programmatically querying or managing Dagster Plus resources (assets, runs, deployments, code locations, schedules, sensors, secrets, issues, etc.)
- [dg list](./references/cli/list/INDEX.md) — exploring project structure (component tree, environment variables, workspace projects)
- [Dagster Plus CLI](./references/cli/plus/INDEX.md) — dg plus, Dagster Plus authentication, configuration, and deployment; logging in, setting config, creating API tokens, deploying code, pulling env vars, managing dbt manifests
- [dg scaffold component](./references/cli/scaffold/component.md) — creating a custom reusable component type
- [dg scaffold defs](./references/cli/scaffold/defs.md) — adding new definitions (assets, schedules, sensors, components) to a project
- [dg utilities](./references/cli/utils/INDEX.md) — dg utils, inspecting component types, viewing integrations, refreshing state-backed component cache
- [Creating Components](./references/components/creating-components.md) — building a new custom component from scratch
- [Designing Component Integrations](./references/components/designing-component-integrations.md) — designing a component that wraps an external service or tool; custom integrations
- [Resolved Framework](./references/components/resolved-framework.md) — defining custom YAML schema types using Resolver, Model, or Resolvable
- [Subclassing Components](./references/components/subclassing-components.md) — extending an existing component via subclassing; customize dagster integration component
- [Template Variables](./references/components/template-variables.md) — using Jinja2 template variables in component YAML (env, dg, context, or custom scopes)
- [Creating State-Backed Components](./references/components/state-backed/creating.md) — building a component that fetches and caches external state
- [Using State-Backed Components](./references/components/state-backed/using.md) — managing state-backed components in production, CI/CD, or refreshing state
- [Deployment Configuration Files](./references/deployment/config-files.md) — build.yaml, container_context.yaml, dagster_cloud.yaml; Dagster Plus deployment configuration; configuring Docker registry, container context, agent queue; Hybrid deployment files
- [Integration libraries index for 40+ tools and technologies (dbt, Fivetran, Snowflake, AWS, etc.).](./references/integrations/INDEX.md) — integration, external tool, dagster-\*; dbt, fivetran, airbyte, snowflake, bigquery, sling, aws, gcp
- [Migration Guides](./references/migration/INDEX.md) — sensor migration to declarative automation, sensor migration to automation condition
<!-- END GENERATED INDEX -->

<!-- chapter:end slug=dagster-expert -->

---

<!-- chapter:begin slug=dignified-python position=2 -->

## 2. dignified-python

- **Source:** https://github.com/dagster-io/skills/blob/master/skills/dignified-python/skills/dignified-python/SKILL.md
- **Raw:** https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/SKILL.md
- **Markdown:** https://skillsdocs.com/dagster-io/skills/dignified-python.md
- **Licence:** Apache-2.0 — https://spdx.org/licenses/Apache-2.0.html

Bundled files (14), referenced from this skill's directory:
  - `cli-patterns.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/cli-patterns.md
  - `dignified-python-core.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/dignified-python-core.md
  - `references/advanced/api-design.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/advanced/api-design.md
  - `references/advanced/exception-handling.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/advanced/exception-handling.md
  - `references/advanced/interfaces.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/advanced/interfaces.md
  - `references/advanced/typing-advanced.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/advanced/typing-advanced.md
  - `references/checklists.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/checklists.md
  - `references/module-design.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/module-design.md
  - `references/README.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/references/README.md
  - `subprocess.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/subprocess.md
  - `versions/python-3.10.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/versions/python-3.10.md
  - `versions/python-3.11.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/versions/python-3.11.md
  - `versions/python-3.12.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/versions/python-3.12.md
  - `versions/python-3.13.md` — https://raw.githubusercontent.com/dagster-io/skills/master/skills/dignified-python/skills/dignified-python/versions/python-3.13.md

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
name: dignified-python
description:
  Opinionated production Python standards with automatic version detection (3.10-3.13). Use when
  writing, reviewing, or refactoring Python in repos that want modern type syntax, explicit
  condition checks where practical, pathlib operations, interface guidance, and pragmatic
  production patterns.
references:
  - dignified-python-core
  - cli-patterns
  - versions/python-3.10
  - versions/python-3.11
  - versions/python-3.12
  - versions/python-3.13
  - references/advanced/api-design
  - references/advanced/exception-handling
  - references/advanced/interfaces
  - references/advanced/typing-advanced
---

# Dignified Python

Opinionated Python guidance for writing clean, maintainable, modern Python code (versions
3.10-3.13).

## When to Use This Skill

Auto-invoke when users ask about:

- "make this pythonic" / "is this good python"
- "type hints" / "type annotations" / "typing"
- "LBYL vs EAFP" / "exception handling"
- "pathlib vs os.path" / "path operations"
- "CLI patterns" / "click usage"
- "code review" / "improve this code"
- Any Python code quality or standards question

**Note**: This skill is **general-purpose Python style guidance**, not Dagster-specific. It
captures one explicit, LBYL-leaning set of conventions; project conventions can override it when needed.

## When to Use This Skill vs. Others

| User Need                    | Use This Skill              | Alternative Skill         |
| ---------------------------- | --------------------------- | ------------------------- |
| "make this pythonic"         | ✅ Yes - Python standards   |                           |
| "is this good python"        | ✅ Yes - code quality       |                           |
| "type hints"                 | ✅ Yes - typing guidance    |                           |
| "LBYL vs EAFP"               | ✅ Yes - exception patterns |                           |
| "pathlib vs os.path"         | ✅ Yes - path handling      |                           |
| "best practices for dagster" | ❌ No                       | `/dagster-best-practices` |
| "implement X pipeline"       | ❌ No                       | `/dg` for implementation  |
| "which integration to use"   | ❌ No                       | `/dagster-expert`         |
| "CLI argument parsing"       | ✅ Yes - CLI patterns       |                           |

## Core Knowledge (ALWAYS Loaded)

@dignified-python-core.md

## Version Detection

**Identify the project's minimum Python version** by checking (in order):

1. `pyproject.toml` - Look for `requires-python` field (e.g., `requires-python = ">=3.12"`)
2. `setup.py` or `setup.cfg` - Look for `python_requires`
3. `.python-version` file - Contains version like `3.12` or `3.12.0`
4. Default to Python 3.12 if no version specifier found

**Once identified, load the appropriate version-specific file:**

- Python 3.10: Load `versions/python-3.10.md`
- Python 3.11: Load `versions/python-3.11.md`
- Python 3.12: Load `versions/python-3.12.md`
- Python 3.13: Load `versions/python-3.13.md`

## Conditional Loading (Load Based on Task Patterns)

Core files above cover 80%+ of Python code patterns. Only load these additional files when you
detect specific patterns:

Pattern detection examples:

- If task mentions "click" or "CLI" -> Load `cli-patterns.md`
- If task mentions "subprocess" -> Load `subprocess.md`

## Reference Documentation Structure

This skill's reference material is organized by topic:

### Core References

- **`dignified-python-core.md`** - Essential standards (always loaded)
- **`cli-patterns.md`** - Command-line interface patterns (click, argparse)

### Version-Specific References (`versions/`)

- **`python-3.10.md`** - Features available in Python 3.10+
- **`python-3.11.md`** - Features available in Python 3.11+
- **`python-3.12.md`** - Features available in Python 3.12+
- **`python-3.13.md`** - Features available in Python 3.13+

### Advanced Topics (`references/advanced/`)

- **`exception-handling.md`** - LBYL patterns, error boundaries
- **`interfaces.md`** - ABC and Protocol patterns
- **`typing-advanced.md`** - Advanced typing patterns
- **`api-design.md`** - API design principles

## When to Read Each Reference Document

### `references/advanced/exception-handling.md`

**Read when**:

- Writing try/except blocks
- Wrapping third-party APIs that may raise
- Seeing or writing `from e` or `from None`
- Unsure if LBYL alternative exists

### `references/advanced/interfaces.md`

**Read when**:

- Creating ABC or Protocol classes
- Writing @abstractmethod decorators
- Designing gateway layer interfaces
- Choosing between ABC and Protocol

### `references/advanced/typing-advanced.md`

**Read when**:

- Using typing.cast()
- Creating Literal type aliases
- Narrowing types in conditional blocks

### `references/module-design.md`

**Read when**:

- Creating new Python modules
- Adding module-level code (beyond simple constants)
- Using @cache decorator at module level
- Seeing Path() or computation at module level
- Considering inline imports

### `references/advanced/api-design.md`

**Read when**:

- Adding default parameter values to functions
- Defining functions with 5 or more parameters
- Using ThreadPoolExecutor.submit()
- Reviewing function signatures

### `references/checklists.md`

**Read when**:

- Final review before committing Python code
- Unsure if you've followed all rules
- Need a quick lookup of requirements

## How to Use This Skill

1. **Core knowledge** is loaded automatically (defaults, pathlib, imports,
   anti-patterns)
2. **Version detection** happens once - identify the minimum Python version and load the appropriate
   version file
3. **Reference documents** are loaded on-demand based on the triggers above
4. **Additional patterns** may require extra loading (CLI patterns, subprocess)
5. **Each file is self-contained** with complete guidance for its domain

<!-- chapter:end slug=dignified-python -->
