## Summary & Motivation Follow-up to #26761, which broke the sync it was meant to fix. The partial-clone backfill it added calls `git fetch --refetch`, a flag introduced in git 2.41. The copybara image is built on `eclipse-temurin:21-jre-jammy`, whose git is 2.34.1, so the call fails with ``error: unknown option `refetch'`` and the backfill raised, failing the whole job. Build 11719 failed five times this way. This regressed `dagster-outbound` too, which had been working, so every master commit touching `dagster-oss/` would have failed its sync. A failed backfill should never fail the sync, because the backfill is defense-in-depth rather than the actual fix. Without it copybara still fetches whatever the agent's `--reference` mirror supplies, which is how the sync worked for as long as it has existed, and `describe_version = False` — the other half of #26761, which is working — already removes the `refs/tags/*` fetch that was the observed production failure. So this warns and continues instead of raising. I got this wrong twice in the same area, and the reason is worth recording: my local git is 2.50, the integration test exercises the backfill and passes, and nothing in the test environment resembles the image's git. The test still can't catch this class, so the code no longer depends on the flag being present. The `CONTRIBUTING.md` wording fix is here to trip the step's gate. The sync step only runs `skills-outbound` when `git diff HEAD~1 HEAD` matches `^public/skills/`, so a code-only change would restore `dagster-outbound` and skip skills entirely, leaving `dagster-io/skills` stuck at `c68a338`. With this file included, one merge restores dagster-outbound and lets the skills sync catch up all five outstanding commits. The wording itself was wrong next to the plugin listing corrected in #26761: it called them skills where the list names plugins. ## Test Plan - `just ruff` and `just ty` clean. - `tox -e py312` in `integration_tests/copybara-config-tests`: 17 passed. Note this suite runs on local git 2.50, where `--refetch` succeeds, so it exercises the success path only — the regression it missed is precisely why the failure path is now non-fatal. - Confirmed the version boundary directly in both images rather than inferring it: `21-jre-jammy` has git 2.34.1 with no `--refetch` in `git fetch -h`; `21-jre-noble` has git 2.43.0 and lists `--refetch re-fetch without negotiating common commits`. - Not verified end to end until this merges and the next `public/skills/`-touching commit triggers a real sync run; the previous build's failure signature (`unknown option refetch`) should be replaced by a warning followed by a successful copybara fetch. ## Changelog NOCHANGELOG Internal-RevId: 310af18283f23c614583eec7ee13fef8f26fc9fc
Dagster Skills
AI assistant skills for building workflows and data pipelines using Dagster. It bundles the dagster-expert skill for authoring pipelines and the Dagster+ MCP server for access to your Dagster+ deployment.
Compatible with Claude Code, Cursor, OpenCode, OpenAI Codex, Pi, and other Agent Skills-compatible tools.
Installation
Claude Code
Install using the Claude plugin marketplace:
/plugin marketplace add dagster-io/skills
/plugin install dagster@dagster
/dagster-expert "What's an asset?"
The plugin includes the
Dagster+ MCP server, giving the skill direct
access to your deployed organization: runs, assets, deployments, code locations, alert policies,
Issues, and insights metrics. Run /mcp to authenticate.
/mcp
# authenticate dagster-plus
Fetch the run logs for the most recent run failure.
The MCP URL points at the US region by default. If your organization is in the EU region, set the following environment variable before launching Claude Code:
export DAGSTER_CLOUD_MCP_URL=https://mcp.agent.eu.dagster.cloud/mcp
Using npx skills
Install using the npx skills command-line:
npx skills add dagster-io/skills
Manual Installation
See full instructions...
Clone the repository and copy skills to your tool's skills directory:
OpenCode:
git clone https://github.com/dagster-io/skills.git
cp -r skills/plugins/dagster/skills/* ~/.config/opencode/skill/
OpenAI Codex:
git clone https://github.com/dagster-io/skills.git
cp -r skills/plugins/dagster/skills/* ~/.codex/skills/
Pi Agent:
git clone https://github.com/dagster-io/skills.git
cp -r skills/plugins/dagster/skills/* ~/.pi/agent/skills/
Upgrading from dagster-expert
The Dagster skill now ships in a plugin named dagster rather than dagster-expert. The skill
itself is unchanged and is still invoked with /dagster-expert.
dagster-expert remains installable for now, but has become a stub that carries no Dagster guidance and only points here. To migrate:
/plugin install dagster@dagster
/plugin uninstall dagster-expert
If you install dagster without uninstalling dagster-expert, two plugins
provide a skill named dagster-expert and the deprecated stub may be used instead of the real one.
The dagster-expert plugin will be removed in a future release. After that, installations of it
report Plugin dagster-expert not found in marketplace dagster and stop loading.
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
Dagster+ MCP
Direct access to Dagster+ data about your deployment, including run logs, Insights, and select actions to remediate failures.
The MCP server uses your user permissions when determining the MCP server permissions. To use custom permissions, see the documentation for alternative authentication methods here
What you can do:
- Launch runs, materialize assets, re-run runs and backfills
- Fetch run logs
- Fetch asset definitions and metadata
- Fetch deployments and deployment information.
- Create and update alert policies and fetch their notifications
- Fetch Insights metrics for assets, jobs, and deployments
Example prompts:
Fetch the logs for run <run id>, investigate why it failed, and propose a solution.
What is the materialization success rate over the past month?
How often has the customer_returns_job failed in the past quarter?
What assets in my deployment are not covered by an alert policy?
Contributing
See CONTRIBUTING.md.