Dagster+ Cloud Onboarding Skill This skill automates the setup of Dagster+ Cloud projects, including
The Dagster+ onboarding toolkit has been refactored into a modular skill system, making it easier to use, maintain, and understand. Instead of one monolithic 7,586-line script, the functionality is now split into focused, single-purpose modules.
dagster_utils.py (Shared utilities - ~500 lines)
├── dagster_new_project.py (New project creation - ~320 lines)
├── dagster_prepare_deployment.py (Deployment prep - ~350 lines)
├── dagster_deploy.py (Cloud deployment - ~280 lines)
├── dagster_agent_setup.py (Agent configuration - ~250 lines)
└── dagster_integrations.py (Integration setup - ~220 lines)
✅ Faster execution - Load only what you need ✅ Easier maintenance - Changes isolated to specific modules ✅ Better testing - Test individual skills independently ✅ Clearer purpose - Each script has one clear responsibility ✅ Token efficient - Smaller context windows for Claude Code ✅ Composable - Chain scripts together for complex workflows
Purpose: Shared utility functions used across all skill scripts.
Key Functions:
Environment Detection
detect_python_executable() - Current Python interpreterdetect_virtual_environment() - venv/conda detectiondetect_python_version() - Python version stringProject Analysis
detect_package_name() - Intelligent package name resolutiondetect_definitions_type() - Components vs traditional detectiondetect_monorepo_structure() - Multi-project repository analysisdetect_components_project() - Components architecture checkToken Management
validate_and_extract_token_info() - Token parsing and validationget_organization_and_token() - Interactive credential collectionUtilities
choose() - Interactive menu selectionhas_cmd() - Command availability checkinstall_python_packages() - Package installationensure_project_table() - pyproject.toml validationUsage: Imported by other modules, not run directly.
Purpose: Create new Dagster projects from various sources.
Capabilities:
create-dagsterUsage:
python dagster_new_project.py
Interactive Flow:
Outputs:
Example:
$ python dagster_new_project.py
Choose your Python package manager:
1. pip
2. uv
Enter your choice (1-2): 2
Choose your project source:
1. Create new empty Dagster project (recommended)
2. Dagster quickstart templates
3. Eric Thomas's example projects
4. Custom GitHub repository
5. Use current directory
Enter your choice (1-5): 1
Enter project name: my-data-pipeline
✅ Successfully created new Dagster project!
When to Use:
Purpose: Prepare existing projects for Dagster+ Cloud deployment.
Capabilities:
pyproject.toml configurationdagster_cloud.yaml deployment configUsage:
python dagster_prepare_deployment.py [project_dir]
Interactive Flow:
Outputs:
pyproject.toml - Project metadatadagster_cloud.yaml - Deployment configurationREADME.md - Project documentation (if missing).github/workflows/*.yml - GitHub Actions (if applicable)requirements.txt (if exists)Example:
$ python dagster_prepare_deployment.py
Where is your Dagster project?
1. Current directory
2. Specify different directory
Enter your choice (1-2): 1
🔍 Analyzing project structure...
📁 Single Dagster project detected
What type of Dagster+ deployment will you use?
1. Serverless
2. Hybrid
Enter your choice (1-2): 1
✅ Dagster+ preparation completed!
When to Use:
Purpose: Deploy Dagster projects to Dagster+ Cloud.
Capabilities:
Usage:
python dagster_deploy.py [project_dir]
Interactive Flow:
Deployment Methods:
Serverless PEX:
Serverless Docker:
Hybrid:
dagster_agent_setup.py)Example:
$ python dagster_deploy.py
Where is your Dagster project?
1. Current directory
Enter your choice: 1
Enter your Dagster+ API token: agent:my-org:abc123...
✅ Valid agent token detected
Enter deployment name (prod): prod
Choose deployment type:
1. Serverless
Enter your choice: 1
Choose deployment method:
1. PEX (Python executable)
2. Docker
Enter your choice: 1
🚀 Deploying serverless Python executable...
✅ Deployment successful!
💡 View at: https://cloud.dagster.io/my-org/prod
When to Use:
Purpose: Set up Dagster+ hybrid deployment agents.
Capabilities:
Usage:
python dagster_agent_setup.py
Interactive Flow:
Agent Types:
ECS Agent (AWS):
Docker Agent (Local):
Kubernetes Agent:
Example:
$ python dagster_agent_setup.py
Enter your Dagster+ API token: agent:my-org:abc123...
✅ Valid agent token detected
Enter deployment name (prod): prod
What type of agent?
1. ECS Agent (AWS)
2. Docker Agent (Local)
3. Kubernetes Agent
Enter your choice: 2
🐳 Setting up Docker Agent...
✅ Dagster Cloud agent started successfully!
💡 Useful commands:
View logs: docker logs -f dagster-cloud-agent-prod
Stop agent: docker stop dagster-cloud-agent-prod
When to Use:
Purpose: Add integration capabilities to Dagster projects.
Capabilities:
Usage:
python dagster_integrations.py [project_dir]
Interactive Flow:
Integrations:
dbt:
dagster-dbt, dbt-core, dbt-duckdbAirlift:
dagster-airlift[core], apache-airflowFivetran:
dagster-fivetranAirbyte:
dagster-airbytePower BI:
dagster-powerbiExample:
$ python dagster_integrations.py
Where is your Dagster project?
1. Current directory
Enter your choice: 1
Choose package manager:
1. pip
Enter your choice: 1
Which integration?
1. dbt
2. Airlift
3. Fivetran
4. Airbyte
5. Power BI
6. Done
Enter your choice: 1
📦 Installing dbt dependencies...
✅ dbt integration dependencies installed
💡 Next steps:
1. Initialize dbt: dbt init
2. Create dbt asset
3. See: https://docs.dagster.io/integrations/dbt
When to Use:
# 1. Create new project
python dagster_new_project.py
# Choose: Create new empty project
# Result: my-data-pipeline/
# 2. Add integrations (optional)
cd my-data-pipeline
python ../dagster_integrations.py
# Choose: dbt
# 3. Develop locally
dagster dev
# 1. Create new project
python dagster_new_project.py
# 2. Prepare for deployment
cd my-data-pipeline
python ../dagster_prepare_deployment.py
# Choose: Serverless deployment
# 3. Deploy to Cloud
python ../dagster_deploy.py
# Enter credentials
# Choose: PEX deployment
# 1. Navigate to project
cd my-existing-project
# 2. Prepare for Cloud
python ../dagster_prepare_deployment.py
# Generates configuration files
# 3. Deploy
python ../dagster_deploy.py
# 1. Set up agent
python dagster_agent_setup.py
# Choose: ECS Agent (AWS)
# Result: Agent running in AWS
# 2. Prepare project
cd my-project
python ../dagster_prepare_deployment.py
# Choose: Hybrid deployment
# 3. Deploy (uses agent)
python ../dagster_deploy.py
# 1. Navigate to project
cd my-project
# 2. Add integration
python ../dagster_integrations.py
# Choose: Airlift (Airflow migration)
# 3. Configure integration
# Follow printed instructions
# 4. Test locally
dagster dev
dagster_get_started.py:| Old Goal | New Skill(s) |
|---|---|
| New project (local) | dagster_new_project.py → dagster_integrations.py |
| New project (cloud) | dagster_new_project.py → dagster_prepare_deployment.py → dagster_deploy.py |
| Prepare existing | dagster_prepare_deployment.py |
| Install agent | dagster_agent_setup.py |
| Deploy existing | dagster_deploy.py |
❌ Monolithic Script Problems:
✅ Modular Skills Benefits:
dagster_new_project.py:
git commanddagster_prepare_deployment.py:
dagster_deploy.py:
dagster-cloud CLIdagster_agent_setup.py:
dagster_integrations.py:
"Module not found: dagster_utils"
"Invalid token format"
user:abc123...agent:org-name:abc123...https://YOUR_ORG.dagster.cloud/settings/tokens"Docker daemon not running"
sudo systemctl start docker (Linux)"Package name detection failed"
pyproject.toml exists[tool.dagster] or [tool.dg.project] sectionsdagster_cloud.yaml"PEX build failed - pip not found"
uv pip install --python .venv/bin/python pipAlways run in a virtual environment to avoid dependency conflicts:
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
python dagster_new_project.py
For learning, use dagster_new_project.py to create a clean project structure.
Before deploying to Cloud:
dagster dev # Test locally
Serverless is faster to set up and deploy. Use hybrid for production with special requirements.
Add integrations (dbt, Airlift, etc.) during initial setup rather than retrofitting later.
Commit generated files (pyproject.toml, dagster_cloud.yaml, workflows) to Git.
dagster_new_project.pyThe modular Dagster+ skills provide focused, efficient tools for each stage of the Dagster development lifecycle:
dagster_new_project.pydagster_integrations.pydagster_prepare_deployment.pydagster_deploy.pydagster_agent_setup.pyEach skill is:
This modular approach makes it easier to understand, use, and extend the Dagster+ onboarding experience.