Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Dagster io Dagster Create Dagster CLI

From Leeroopedia


Property Value
Type Implementation
Category Data_Engineering, Developer_Tools
Repository Dagster_io_Dagster
Implements Principle:Dagster_io_Dagster_Project_Scaffolding

Overview

Concrete CLI tool for scaffolding new Dagster projects with standard structure and configuration provided by the create-dagster package.

Description

The create-dagster CLI and the dg CLI together provide project scaffolding and component management for Dagster projects. The create-dagster project command generates a complete project skeleton with source layout, configuration, and virtual environment. The dg CLI adds component scaffolding (dg scaffold defs) and a development server (dg dev).

Usage

Run create-dagster project my_project to generate a new project, then use dg dev to start the development server. Use dg scaffold defs to add components to an existing project.

Code Reference

Source Location

  • CLI tools (create-dagster, dg)
  • python_modules/dagster/dagster/components/definitions.py:L50

Signature/Pattern

Create a new project:

# Create new project
create-dagster project my_project

# Start development server
cd my_project
dg dev

# Scaffold a component
dg scaffold defs dagster_dbt.DbtProjectComponent --project-path ../analytics

# Scaffold a definitions folder
dg scaffold defs dagster.DefsFolderComponent --name my_defs

Generated project structure:

my_project/
├── pyproject.toml
├── src/
│   └── my_project/
│       ├── __init__.py
│       ├── definitions.py     # @definitions entry point
│       └── defs/              # Auto-discovered definitions folder
│           └── __init__.py
└── .venv/

Import

N/A -- This is a CLI tool, not imported in Python code.

Prerequisites

  • Python >= 3.10
  • uv package manager

I/O Contract

Direction Name Type Description
Input project name str (positional argument) Name for the new project (used for directory and package naming)
Input component type str (for scaffold) Fully qualified component class name (e.g., dagster_dbt.DbtProjectComponent)
Output project directory filesystem Scaffolded project directory with standard structure
Output development server HTTP Running webserver on http://127.0.0.1:3000 (via dg dev)

Usage Examples

Creating a new project from scratch:

# Step 1: Create the project
create-dagster project my_data_pipeline

# Step 2: Enter the project directory
cd my_data_pipeline

# Step 3: Start the development server
dg dev
# Server starts at http://127.0.0.1:3000

Adding a dbt component to an existing project:

# Scaffold a dbt project component
dg scaffold defs dagster_dbt.DbtProjectComponent --project-path ../my_dbt_project

# Scaffold an additional definitions folder for custom assets
dg scaffold defs dagster.DefsFolderComponent --name custom_assets

Generated definitions.py entry point:

import dagster as dg

@dg.definitions
def defs():
    # Auto-discovers assets and other definitions from the defs/ directory
    return dg.Definitions(
        assets=dg.load_assets_from_modules([defs]),
    )

Related Pages

Requires Environment

Uses Heuristic

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment