.config/opencode/skills/dagster-local/SKILL.md
Interact with Dagster data orchestration platform running locally or on Kubernetes. Use when Claude needs to monitor Dagster runs, get run logs, list assets/jobs, materialize assets, launch jobs, or debug pipeline failures. Supports both local Dagster dev server and Kubernetes deployments where each job run is a separate pod.
npx skillsauth add alexismanuel/dotfiles dagster-localInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Programmatic interaction with Dagster via GraphQL API and Kubernetes for pod-level logs.
from scripts.dagster_client import DagsterClient
client = DagsterClient() # defaults to http://localhost:8000/graphql
# List all assets
assets = client.list_assets()
# Get recent runs
runs = client.get_recent_runs(limit=10)
# Get logs for a specific run
logs = client.get_run_logs(run_id="abc123")
client = DagsterClient(graphql_url="http://localhost:8000/graphql")
| Function | Purpose |
|----------|---------|
| list_repositories() | List all code locations/repositories |
| list_jobs(repo_location, repo_name) | List jobs in a repository |
| list_assets(repo_location, repo_name) | List assets in a repository |
| get_recent_runs(limit) | Get recent run history |
| get_run_info(run_id) | Get detailed run info and status |
| get_run_logs(run_id) | Get event logs for a run |
| get_asset_info(asset_key) | Get asset details and dependencies |
| Function | Purpose |
|----------|---------|
| launch_job(repo_location, repo_name, job_name, config) | Launch a job run |
| materialize_asset(asset_key, repo_location, repo_name) | Materialize an asset |
| terminate_run(run_id) | Terminate an in-progress run |
When Dagster runs on K8s (each run = separate pod):
from scripts.k8s_logs import get_pod_logs_for_run, get_dagster_pods
# Get pod logs for a specific run
logs = get_pod_logs_for_run(run_id="abc123", namespace="dagster")
# List all Dagster-related pods
pods = get_dagster_pods(namespace="dagster")
get_recent_runs() to find failed runsget_run_info(run_id) for status and error summaryget_run_logs(run_id) for step-level eventsget_pod_logs_for_run(run_id) for stdout/stderrimport time
def wait_for_run(client, run_id, timeout=300):
start = time.time()
while time.time() - start < timeout:
info = client.get_run_info(run_id)
status = info.get("status")
if status in ["SUCCESS", "FAILURE", "CANCELED"]:
return info
time.sleep(5)
raise TimeoutError(f"Run {run_id} did not complete")
def get_failure_reason(client, run_id):
logs = client.get_run_logs(run_id)
failures = [e for e in logs.get("events", []) if "error" in e]
return failures[-1] if failures else None
For advanced queries, see references/graphql_queries.md.
development
Generate GitLab merge request descriptions from git commits with automatic categorization and Jira integration.
development
This skill should be used when validating that an implementation plan was correctly executed. It verifies success criteria, runs tests, identifies deviations, and presents structured completion options including MR creation or discard.
development
This skill should be used when reviewing code changes in a branch against main/master/develop. It analyzes commits, integrates JIRA ticket and MR context when available, and produces a structured code review using Conventional Comments format.
development
This skill should be used when conducting comprehensive codebase research to answer questions, understand architecture, or prepare context for implementation planning. It spawns parallel sub-agents and synthesizes findings into a structured research document.