Initialize a dagster project using the create-dagster cli. Create a dagster project, uv virtual environment, and everything needed for a user to run dg dev or dg check defs successfully. (project)
24 stars
0 votes
0 copies
1 view
Added September 8, 2026
developmentpythongobashgitdocumentation
Works with
cli
Security analysis
C71/100
criticalPipes output to a shell interpreter
mediumUses curl or wget to download content
criticalDownloads and executes remote scripts — classic supply chain attack
Installs into .claude/skills of the current project.
Are you the author of Collection?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-4e32dbf6)
---
name: dagster-init
description: Initialize a dagster project using the create-dagster cli. Create a dagster project, uv virtual environment, and everything needed for a user to run dg dev or dg check defs successfully. (project)
license: MIT
---
# Dagster Project Initialization
## Overview
This skill automates the creation of a new Dagster project using the `create-dagster` CLI tool with uv as the package manager. It creates a clean, Components-compatible project structure ready for local development.
## What This Skill Does
When invoked, this skill will:
1. ✅ Create a new Dagster project using `create-dagster@latest`
2. ✅ Set up a uv virtual environment with all dependencies
3. ✅ Initialize project structure with Components architecture
4. ✅ Ensure the project is ready to run `dg dev` or `dg check defs`
5. ✅ Provide clear next steps for development
## Prerequisites
Before running this skill, ensure:
- `uv` is installed (check with `uv --version`)
- You have a project name in mind (or will use the default)
- You're in the directory where you want to create the project
## Skill Workflow
### Step 1: Validate Environment
Check that uv is available:
```bash
uv --version
```
If uv is not installed, provide installation instructions:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
### Step 2: Get Project Name
Ask the user for a project name, or use a sensible default like `my-dagster-project`. Validate that:
- The name starts with a letter
- Contains only alphanumeric characters, hyphens, or underscores
- The directory doesn't already exist (or ask to overwrite)
### Step 3: Create Project with create-dagster
Use `uvx` to run the latest create-dagster CLI. The CLI requires interactive confirmation, so we pass "y" automatically using `printf`:
```bash
printf "y\n" | uvx create-dagster@latest project <project-name>
```
**Important:** The `printf "y\n"` automatically answers "yes" to the interactive prompt that asks for confirmation to proceed with project creation.
This will:
- Scaffold a new Dagster project with Components structure
- Create `pyproject.toml` with project metadata
- Set up package structure with `definitions.py`
- Create `definitions/defs/` directory for components
### Step 4: Install Dependencies
Navigate into the project directory and run uv sync:
```bash
cd <project-name>
uv sync
```
This creates the virtual environment and installs all dependencies specified in `pyproject.toml`.
### Step 5: Verify Installation
Check that the project is properly set up by running:
```bash
uv run dg check defs
```
This validates that:
- All dependencies are installed correctly
- The Dagster definitions are loadable
- The project structure is correct
### Step 6: Display Success Message
Provide the user with a clear summary and next steps:
```
✅ Successfully created Dagster project: <project-name>
📁 Project structure:
• pyproject.toml - Project configuration
• <project-name>/definitions.py - Main definitions module
• <project-name>/definitions/defs/ - Components directory
🚀 Next steps:
1. cd <project-name>
2. uv run dg dev # Start local development server
3. Open http://localhost:3000 to view Dagster UI
💡 Additional commands:
• uv run dg check defs # Validate definitions
• uv run pytest # Run tests (if configured)
• uv add <package> # Add new dependencies
```
## Error Handling
Handle common issues gracefully:
1. **uv not installed**: Provide installation instructions
2. **Directory already exists**: Ask user to choose different name or overwrite
3. **create-dagster fails**: Show error details and suggest troubleshooting
- Note: The CLI requires interactive confirmation - we automatically pass "y" via `printf "y\n"` to avoid hanging
4. **Dependency installation fails**: Check network, suggest clearing cache
5. **dg check defs fails**: Show validation errors and help debug
## Alternative: Using the Python Script
You can also invoke the provided Python script directly:
```bash
python .claude/skills/dagster-init/scripts/create-dagster.py
```
This provides an interactive workflow with the same functionality. The script automatically handles the interactive prompt by passing "y" to stdin, so it won't hang waiting for user input.
## Project Structure
After successful creation, the project will have:
```
<project-name>/
├── pyproject.toml # Project metadata and dependencies
├── <project-name>/
│ ├── __init__.py
│ ├── definitions.py # Main Dagster definitions
│ └── definitions/
│ └── defs/ # Components directory
│ ├── __init__.py
│ └── ... # Your components go here
├── <project-name>_tests/ # Test directory
├── .venv/ # uv virtual environment
└── uv.lock # Locked dependencies
```
## Tips for Success
- Use descriptive project names that reflect the purpose
- Run `dg check defs` regularly during development to catch issues early
- Keep dependencies minimal initially, add as needed
- Follow the Components pattern for scalable project organization
- Use `uv add` to add new dependencies (it updates pyproject.toml automatically)
## Related Skills
- **dg-plus-init**: For setting up Dagster+ Cloud deployments
- Use after creating a project with this skill to deploy to the cloud
## Resources
- [Dagster Documentation](https://docs.dagster.io/)
- [Components Guide](https://docs.dagster.io/guides/build/projects/moving-to-components)
- [uv Documentation](https://docs.astral.sh/uv/)
- [create-dagster CLI](https://github.com/dagster-io/dagster/tree/master/python_modules/dagster/dagster/_cli/create_dagster)