CtrlK
BlogDocsLog inGet started
Tessl Logo

orchestra-hq/orchestra-skills

A curated collection of Agent Skills for working with Orchestra, for agents to effectively implement standards, common workflows, and manage pipelines.

76

1.00x
Quality

88%

Does it follow best practices?

Impact

100%

1.00x

Average score across 1 eval scenario

SecuritybySnyk

Medium

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

orchestra-skills

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.

What is in this repo

Skills

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.

Diagnose & fix pipelines

SkillWhat it doesTry saying
identify-pipeline-errorEntry 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-taskFixes 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-taskFixes 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-pipelineFixes 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-pipelineSame 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"

Author & maintain pipelines

SkillWhat it doesTry saying
create-orchestra-pipelineAuthor, 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-pipelinesFinds 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-pipelineBuilds 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."

Account health & governance

SkillWhat it doesTry saying
account-health-checkRead-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?"

dbt state-aware orchestration

SkillWhat it doesTry saying
orchestra-dbt-slim-ci-setupRetrofit 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-freshnessAuthor 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-afterAuthor 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"

Data-quality testing

SkillWhat it doesTry saying
write-snowflake-dq-testsProfile 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-testsSame profile-then-test workflow as above, for BigQuery."Write data quality tests for my BigQuery tables"
write-clickhouse-dq-testsSame profile-then-test workflow as above, for ClickHouse."Write data quality tests for my ClickHouse tables"
write-databricks-dq-testsSame 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.

Migrate to Orchestra

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.

Pipeline structure & cross-cutting concerns

SkillWhat it does
dagster-definitions-to-orchestraConverts Definitions/ScheduleDefinition/RetryPolicy/concurrency/Config into the Orchestra pipeline root (schedule, configuration, inputs). Apply first, before any task-level skill.
dagster-connections-to-orchestraMaps Dagster resources (ConfigurableResource, SnowflakeResource, EnvVar, etc.) to Orchestra connections and naming/secrets conventions.
dagster-alerts-to-orchestraConverts run-failure/status sensors and success/failure hooks into Orchestra's alerts: block across all six destination types.
dagster-sensors-to-orchestraConverts @sensor/@asset_sensor/@multi_asset_sensor polling external state into Orchestra sensors:.
dagster-cross-job-to-orchestraConverts 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-orchestraConverts conditional op branching, DynamicOut fan-out, and conditional asset materialization into Orchestra condition:/matrix patterns.
dagster-asset-checks-to-orchestraConverts @asset_check/AssetCheckResult/dbt-test-via-dagster-dbt/ExpectationResult into Orchestra DQ test tasks.
dagster-io-managers-to-orchestraConverts op/asset return values, Out/In wiring, and IO managers into Orchestra task OUTPUTS/${{ }} data passing.
dagster-shell-ssh-to-orchestraConverts non-dbt shell/container execution (PipesSubprocessClient, dagster-shell, SSHResource, k8s_job_op) into Orchestra LINUX_SSH/container tasks.

Integration & task conversion

SkillWhat it does
dbt-core-dagster-to-orchestraConverts DbtCliResource/@dbt_assets/dagster-dbt into an Orchestra DBT_CORE task.
python-dagster-to-orchestraConverts plain @op/@asset Python logic (pandas, boto3, API calls) into an Orchestra PYTHON task.
slack-dagster-to-orchestraConverts SlackResource and Slack-posting hooks/sensors into an Orchestra SLACK alert or task.
tableau-dagster-to-orchestraConverts TableauCloudWorkspace/TableauServerWorkspace asset materialization into an Orchestra TABLEAU_CLOUD task.
powerbi-dagster-to-orchestraConverts PowerBIWorkspace/semantic-model refresh assets into an Orchestra POWER_BI task.
fivetran-dagster-to-orchestraConverts FivetranResource/FivetranWorkspace assets into an Orchestra FIVETRAN task.
airbyte-cloud-dagster-to-orchestraConverts AirbyteCloudResource assets into an Orchestra AIRBYTE_CLOUD task.
airbyte-server-dagster-to-orchestraConverts 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.

Reference library

Start at skills/orchestra/references/orchestra/README.md. Highlights:

  • Pipeline — authoring schema + examples, failure classification, remediation playbooks, and an optional local fix-history template (knowledge-store.md)
  • State-aware orchestration (dbt SAO) — source-freshness and 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/)
  • MCPcloud MCP setup and tool quick reference

Install for humans

Prerequisites

  • An Orchestra API key (Orchestra UI → Settings → API Keys)
  1. Connect Orchestra's cloud MCP server. Point your client at the hosted endpoint following the cloud MCP docs (~/.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.
  2. Install the plugin(s) you need so the skills are discoverable by your client — the two install independently:
    • Claude Code — add this repo as a marketplace, then install one or both plugins:
      /plugin marketplace add orchestra-hq/orchestra-skills
      /plugin install orchestra@orchestra-marketplace
      /plugin install migrate-to-orchestra@orchestra-marketplace
      (or point at a local clone: /plugin marketplace add /path/to/orchestra-skills).
    • Cursor — add the marketplace and install 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.
  3. For agent behavior in this repo, read AGENTS.md.

Typical workflows

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.

Contributing

  • Skills live under 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.
  • To add a skill, create 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.
  • To add a new orchestrator's migration skills (Airflow, Prefect, …) alongside Dagster's, add them under 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.
  • Recording fixes is optional and deferred to your client's persistent memory — never commit workspace-specific fix history. Extend pipeline/diagnosis-patterns.md only with generic, reusable patterns.
  • Evals. Skill evals live under 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.
  • Do not commit API keys, .env files, or other secrets.

Agents editing this repo should follow AGENTS.md.

Workspace
orchestra-hq
Visibility
Public
Created
Last updated
Publish Source
GitHub
Badge
orchestra-hq/orchestra-skills badge