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: the single orchestra plugin bundles every skill and installs into both Claude Code and Cursor from the manifests at the repo root (see Install).
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
| 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" |
Author & maintain pipelines
| 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." |
Account health & governance
| 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?" |
dbt state-aware orchestration
| 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" |
Data-quality testing
| 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.
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_afterschemas, enablinguse_state_orchestration, and a per-warehouse freshness matrix for Snowflake, BigQuery, Databricks, MotherDuck/DuckDB, Redshift, Microsoft Fabric, and Postgres (plus anotherfallback) (dbt-sao/) - MCP — cloud MCP setup and tool quick reference
Install for humans
Prerequisites
- An Orchestra API key (Orchestra UI → Settings → API Keys)
- Connect Orchestra's cloud MCP server. Point your client at the hosted endpoint following the cloud MCP docs (
~/.claude/mcp.jsonfor Claude Code, or Cursor MCP settings) and authenticate with yourORCHESTRA_API_KEY— no local install required. Restart/reload so tools such aslist_pipeline_runsandlist_task_run_logsappear. - Install the
orchestraplugin so the skills are discoverable by your client:- Claude Code — add this repo as a marketplace, then install the plugin:
(or point at a local clone:/plugin marketplace add orchestra-hq/orchestra-skills /plugin install orchestra@orchestra-marketplace/plugin marketplace add /path/to/orchestra-skills). - Cursor — add the marketplace and install the
orchestraplugin from.cursor-plugin/marketplace.jsonper Cursor's plugin docs. Each skill auto-triggers from a matching prompt once installed.
- Claude Code — add this repo as a marketplace, then install the plugin:
- 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/and shared Orchestra material underskills/orchestra/references/orchestra/, all inside the singleorchestraplugin bundle. There is a single skill tree — no generated copies to keep in sync. - To add a skill, create
skills/orchestra/skills/<skill-name>/SKILL.mdwithname+descriptionfrontmatter, put any supportingreferences//templates/in the same folder, and add it to the relevant category table under Skills. Theorchestraplugin exposes it automatically — bump theversioninskills/orchestra/.claude-plugin/plugin.jsonand.cursor-plugin/plugin.json. Also add its path to theskillsarray in.tessl-plugin/plugin.jsonand bump itsversion— this isn't auto-generated, so a skill left out here silently stops showing up in Tessl's published listing. CI (Validate Skills) checks the frontmatter, thatSKILL.mdstays under ~500 lines, and that the manifests are valid JSON. Write skills to be client-agnostic — describe capabilities (e.g. "if your client can schedule a wake-up…") rather than naming a specific tool. - Recording fixes is optional and deferred to your client's persistent memory — never commit workspace-specific fix history. Extend
pipeline/diagnosis-patterns.mdonly with generic, reusable patterns. - Evals. Skill evals live under
evals/— an eval-driven harness that runs a skill with and without it via the headlessclaudeCLI and grades the output. Currently wired up forwrite-snowflake-dq-tests. Seeevals/README.mdfor setup and how to run, grade, and add a suite. - Do not commit API keys,
.envfiles, or other secrets.
Agents editing this repo should follow AGENTS.md.