A curated collection of Agent Skills for working with Orchestra, for agents to effectively implement standards, common workflows, and manage pipelines.
76
88%
Does it follow best practices?
Impact
100%
1.00xAverage score across 1 eval scenario
Medium
Suggest reviewing before use
Agent skills and reference docs for diagnosing, fixing, and triaging Orchestra data pipelines with an AI assistant. The workflows assume Orchestra's cloud MCP server is connected so the agent can list runs, fetch logs and artifacts, and retry pipelines from your workspace.
This repo is a plugin marketplace with two plugins, installed independently into both Claude Code and Cursor from the manifests at the repo root (see Install):
orchestra — diagnose/fix/triage runs, author pipeline YAML, dbt Slim CI, data-quality tests, account health.migrate-to-orchestra — convert pipelines from another orchestrator (Dagster today; Airflow and Prefect are planned) into Orchestra pipeline YAML.Each skill auto-triggers when your prompt matches it — just describe the problem in natural language. The "Try saying" column shows a prompt that activates each one. Skills are grouped below by what they're for.
| Skill | What it does | Try saying |
|---|---|---|
identify-pipeline-error | Entry point for fixing anything. Gets the pipeline run and task runs, identifies which task broke and why, then routes to the right fixer (or handles non-code causes itself). | "Fix my pipeline" / "what's broken?" — or paste a run URL, UUID, or error |
fix-pipeline-dbt-task | Fixes a dbt Core task once identified as a dbt code/config issue — reproduce, fix in repo, validate on a branch, confirm, merge. Usually invoked by identify-pipeline-error. | "Fix the broken dbt task" |
fix-pipeline-python-task | Fixes a Python task once identified as a code / dependency / destination-schema issue — edit the script, additive-only schema changes, validate, confirm. Usually invoked by identify-pipeline-error. | "Fix the broken python task" |
fix-orchestra-pipeline | Fixes an Orchestra-platform/configuration issue (YAML/inputs/ordering/retry) or a repo code fix in an integration with no dedicated skill — apply fix, PR/poll, retry, confirm. Usually invoked by identify-pipeline-error. | "The pipeline config is wrong, fix it" |
triage-orchestra-pipeline | Same diagnosis, but opens a fix PR and validates it on a branch, then stops for your approval before merging. | "Triage my pipeline but don't merge yet" |
| Skill | What it does | Try saying |
|---|---|---|
create-orchestra-pipeline | Author, validate, and remediate a version: v1 pipeline YAML from a description; also handles edits to an existing pipeline. | "Create a pipeline that runs dbt then loads Snowflake" |
merge-duplicate-pipelines | Finds pipelines that are the same process duplicated per environment or conceptually (per customer/region), drafts a consolidated pipeline using Environment overlays/inputs/matrices, and asks per duplicate set before creating, PR-ing, or pausing anything. | "Why do I have three copies of this pipeline? Consolidate them." |
build-data-reconciliation-pipeline | Builds a pipeline using Orchestra's native Data Reconciliation tasks to prove two systems (Snowflake/SQL Server/Databricks) match — a full validation check for migration cutover, plus an optional scheduled cursor-field drift monitor afterward. | "Make sure our Snowflake-to-Databricks migration matches before we cut over." |
| Skill | What it does | Try saying |
|---|---|---|
account-health-check | Read-only audit of your Orchestra workspace against best practices — findings grouped by area with severity, evidence, and fixes, written to a report plus chat summary. Never edits anything. | "Audit my Orchestra account / is my setup following best practices?" |
| Skill | What it does | Try saying |
|---|---|---|
orchestra-dbt-slim-ci-setup | Retrofit dbt Slim CI (run-pipeline, latest_production, state:modified+, --defer) onto an existing production dbt pipeline. | "Set up dbt Slim CI in Orchestra" |
configure-dbt-source-freshness | Author dbt source freshness (warehouse-correct loaded_at_field/thresholds) and enable use_state_orchestration so Orchestra skips downstream models when sources are unchanged. | "Set up source freshness for state-aware orchestration" |
configure-dbt-build-after | Author per-model build_after (SLA + upstream-freshness gating) so Orchestra rebuilds a model only when it's due and its data is fresh. | "Make my marts state-aware — only rebuild when due and fresh" |
| Skill | What it does | Try saying |
|---|---|---|
write-snowflake-dq-tests | Profile Snowflake data, design tests that fit what each column actually means, then build and deploy a DQ testing pipeline to Orchestra. | "Write data quality tests for my Snowflake tables" |
write-bigquery-dq-tests | Same profile-then-test workflow as above, for BigQuery. | "Write data quality tests for my BigQuery tables" |
write-clickhouse-dq-tests | Same profile-then-test workflow as above, for ClickHouse. | "Write data quality tests for my ClickHouse tables" |
write-databricks-dq-tests | Same profile-then-test workflow as above, for Databricks. | "Write data quality tests for my Databricks tables" |
To get going: connect Orchestra's cloud MCP server (see Install below), install the orchestra plugin so the skills are discoverable by your client (see Install), then just ask.
A separate plugin (migrate-to-orchestra) for converting pipelines from another orchestrator into Orchestra pipeline YAML. Point your client at the source project (Dagster code today) and describe what you want migrated — each skill auto-triggers off the Dagster APIs it recognizes. Start with dagster-definitions-to-orchestra for any whole-job conversion; it establishes the pipeline root that the task-level skills below build on.
Not yet in .tessl-plugin/plugin.json — intentionally excluded from Tessl publishing for now.
| Skill | What it does |
|---|---|
dagster-definitions-to-orchestra | Converts Definitions/ScheduleDefinition/RetryPolicy/concurrency/Config into the Orchestra pipeline root (schedule, configuration, inputs). Apply first, before any task-level skill. |
dagster-connections-to-orchestra | Maps Dagster resources (ConfigurableResource, SnowflakeResource, EnvVar, etc.) to Orchestra connections and naming/secrets conventions. |
dagster-alerts-to-orchestra | Converts run-failure/status sensors and success/failure hooks into Orchestra's alerts: block across all six destination types. |
dagster-sensors-to-orchestra | Converts @sensor/@asset_sensor/@multi_asset_sensor polling external state into Orchestra sensors:. |
dagster-cross-job-to-orchestra | Converts cross-job/cross-code-location triggers (@run_status_sensor yielding RunRequest, @asset_sensor on another job's asset) into Orchestra pipeline-triggers-pipeline patterns. |
dagster-branching-to-orchestra | Converts conditional op branching, DynamicOut fan-out, and conditional asset materialization into Orchestra condition:/matrix patterns. |
dagster-asset-checks-to-orchestra | Converts @asset_check/AssetCheckResult/dbt-test-via-dagster-dbt/ExpectationResult into Orchestra DQ test tasks. |
dagster-io-managers-to-orchestra | Converts op/asset return values, Out/In wiring, and IO managers into Orchestra task OUTPUTS/${{ }} data passing. |
dagster-shell-ssh-to-orchestra | Converts non-dbt shell/container execution (PipesSubprocessClient, dagster-shell, SSHResource, k8s_job_op) into Orchestra LINUX_SSH/container tasks. |
| Skill | What it does |
|---|---|
dbt-core-dagster-to-orchestra | Converts DbtCliResource/@dbt_assets/dagster-dbt into an Orchestra DBT_CORE task. |
python-dagster-to-orchestra | Converts plain @op/@asset Python logic (pandas, boto3, API calls) into an Orchestra PYTHON task. |
slack-dagster-to-orchestra | Converts SlackResource and Slack-posting hooks/sensors into an Orchestra SLACK alert or task. |
tableau-dagster-to-orchestra | Converts TableauCloudWorkspace/TableauServerWorkspace asset materialization into an Orchestra TABLEAU_CLOUD task. |
powerbi-dagster-to-orchestra | Converts PowerBIWorkspace/semantic-model refresh assets into an Orchestra POWER_BI task. |
fivetran-dagster-to-orchestra | Converts FivetranResource/FivetranWorkspace assets into an Orchestra FIVETRAN task. |
airbyte-cloud-dagster-to-orchestra | Converts AirbyteCloudResource assets into an Orchestra AIRBYTE_CLOUD task. |
airbyte-server-dagster-to-orchestra | Converts self-hosted AirbyteResource(host=,port=) assets into an Orchestra AIRBYTE_SERVER task. |
To get going: install the migrate-to-orchestra plugin (see Install), open a Claude/Cursor session in the source Dagster project, and describe the migration — no upload step needed, the skills read the project's own source files directly.
Start at skills/orchestra/references/orchestra/README.md. Highlights:
knowledge-store.md)build_after schemas, enabling use_state_orchestration, and a per-warehouse freshness matrix for Snowflake, BigQuery, Databricks, MotherDuck/DuckDB, Redshift, Microsoft Fabric, and Postgres (plus an other fallback) (dbt-sao/)~/.claude/mcp.json for Claude Code, or Cursor MCP settings) and authenticate with your ORCHESTRA_API_KEY — no local install required. Restart/reload so tools such as list_pipeline_runs and list_task_run_logs appear./plugin marketplace add orchestra-hq/orchestra-skills
/plugin install orchestra@orchestra-marketplace
/plugin install migrate-to-orchestra@orchestra-marketplace/plugin marketplace add /path/to/orchestra-skills).orchestra and/or migrate-to-orchestra from .cursor-plugin/marketplace.json per Cursor's plugin docs.
Each skill auto-triggers from a matching prompt once installed.AGENTS.md.Failed run — Paste a pipeline run URL, run UUID, pipeline name, or error snippet. identify-pipeline-error parses the input, loads the pipeline run and failed task runs, identifies the failing task and its cause, then routes to the right fixer: a dbt code issue → fix-pipeline-dbt-task, a Python code/schema issue → fix-pipeline-python-task, an Orchestra-platform/config issue → fix-orchestra-pipeline. Data, vendor/ingestion, auth, network, and other causes are reported with the right next action by identify-pipeline-error itself.
Author pipeline YAML — Describe the desired stages/tasks and create a version: v1 pipeline YAML. The authoring skill validates (via orchestra-cli or MCP) and remediates validation errors until clean.
Review before merge — Use the triage skill when you want a branch fix, validation run, and triage summary, then explicit approval before merge and production retry.
Downstream symptom — Triage can start from a downstream issue (stale dashboard, bad dbt output) and walk upstream through the pipeline graph.
skills/orchestra/skills/ (the orchestra plugin) and skills/migrate-to-orchestra/skills/ (the migrate-to-orchestra plugin), each its own plugin bundle with its own .claude-plugin/plugin.json/.cursor-plugin/plugin.json. Shared Orchestra pipeline/schema material lives under skills/orchestra/references/orchestra/ and is the single source of truth for pipeline YAML schema/validation — migration skills should link to it rather than re-deriving schema tables locally, to avoid two sources drifting apart.skills/<plugin>/skills/<skill-name>/SKILL.md with name + description frontmatter, put any supporting references//templates/ in the same folder, and add it to the relevant category table under Skills (or Migrate to Orchestra). The plugin exposes it automatically — bump the version in that plugin's .claude-plugin/plugin.json and .cursor-plugin/plugin.json. Also add its path to the skills array in .tessl-plugin/plugin.json and bump its version — this isn't auto-generated, so a skill left out here silently stops showing up in Tessl's published listing (Tessl has no plugin concept, so both plugins show up in one flat list there — the skills/<plugin>/... path prefix is the only separation). CI (Validate Skills) checks the frontmatter, that SKILL.md stays under ~500 lines, that the manifests are valid JSON, and that every skill on disk lives inside some plugin's skills/ directory. Write skills to be client-agnostic — describe capabilities (e.g. "if your client can schedule a wake-up…") rather than naming a specific tool.skills/migrate-to-orchestra/skills/<orchestrator>-*-to-orchestra/ following the existing naming convention — one plugin covers all source orchestrators, so no new plugin/marketplace entry is needed.pipeline/diagnosis-patterns.md only with generic, reusable patterns.evals/ — an eval-driven harness that runs a skill with and without it via the headless claude CLI and grades the output. Currently wired up for write-snowflake-dq-tests. See evals/README.md for setup and how to run, grade, and add a suite..env files, or other secrets.Agents editing this repo should follow AGENTS.md.
.tessl-plugin
evals
scenario-1
skills
orchestra
skills
account-health-check
references
build-data-reconciliation-pipeline
configure-dbt-build-after
configure-dbt-source-freshness
create-orchestra-pipeline
fix-orchestra-pipeline
fix-pipeline-dbt-task
fix-pipeline-python-task
identify-pipeline-error
merge-duplicate-pipelines
references
orchestra-dbt-slim-ci-setup
triage-orchestra-pipeline
write-bigquery-dq-tests
write-clickhouse-dq-tests
write-databricks-dq-tests
write-snowflake-dq-tests