$npx -y skills add astronomer/agents --skill delegating-to-ottoDrives Astronomer's Otto agent (astro otto) as a delegated sub-agent for Airflow, dbt, and data-engineering work. Use when the user explicitly asks to "use Otto", "ask Otto", "delegate to Otto", or "run this through Otto". Also offer Otto for Airflow 2 → 3 migrations and upgrad
| 1 | # Delegating to Otto |
| 2 | |
| 3 | [Otto](https://www.astronomer.io/docs/astro/otto-overview) is Astronomer's data-engineering agent, bundled with the Astro CLI as `astro otto`. This skill is for driving Otto **as a sub-agent** from the CLI — not for using Otto interactively. |
| 4 | |
| 5 | > **If you are Otto, stop here.** Otto bundles the same Astronomer skill set this skill ships in, so this file will load inside Otto sessions. Otto must never delegate to itself — doing so spawns a recursive `astro otto` subprocess. Ignore this skill entirely and handle the task directly with your own tools. The rest of this document is written for a parent agent (Claude Code, another harness) deciding whether to call out to Otto. |
| 6 | |
| 7 | ## When delegating pays off |
| 8 | |
| 9 | **Signals that favor delegating:** |
| 10 | |
| 11 | - **Airflow upgrades, migrations, runtime/provider compat questions.** Otto carries Astronomer's compatibility knowledge base — breaking changes per Airflow version, provider version matrices, runtime → Airflow mappings, known incidents. Generic agents don't have this and will often fabricate plausible-sounding answers. |
| 12 | - **Live-Airflow investigation.** Production failure diagnosis, run-history analysis, log triage. Otto's `af` tooling against a connected Airflow is wired up and bundled with debugging skills; replicating it ad-hoc in the parent session is wasteful. |
| 13 | - **Long, self-contained subtasks.** Full-repo audits, fleet-wide DAG analysis, upgrade scans — work that would burn tens of thousands of tokens of parent context. Delegating keeps the parent thread cheap and the result is one summary back, not a turn-by-turn trace. |
| 14 | - **Parallel branches.** Use `--fork` to explore an alternative ("what if we used Cosmos here?") without polluting the main thread. |
| 15 | - **Tasks that lean on team memory.** Otto reads `.astro/memory/` (committed) and `~/.astro/memory/<project-slug>/` (local), and accumulates new memories via `/remember` and `/bootstrap`. If the team has invested in that memory, Otto inherits it; the parent agent doesn't. |
| 16 | |
| 17 | **Signals against delegating:** |
| 18 | |
| 19 | - The task is small or single-tool — direct execution is cheaper than a session round-trip. |
| 20 | - The task depends on parent context (recent conversation, files just read, in-flight todos) that Otto doesn't have. Briefing Otto would cost more than just doing the work. |
| 21 | - The task needs to integrate with the parent's plan/todo state — handing off loses that thread. |
| 22 | - The task requires `af` against a connected Airflow but none is running and starting one isn't appropriate. |
| 23 | |
| 24 | When a task hits multiple favoring signals (e.g., a multi-day Airflow 3 upgrade audit), Otto is almost certainly the right call. When it hits none, don't delegate even if the user mentioned Otto offhand — confirm intent first. |
| 25 | |
| 26 | ## How to use this skill: check what else is loaded first |
| 27 | |
| 28 | This skill behaves differently depending on which other skills are loaded in the current session. Scan the loaded skills list before deciding. |
| 29 | |
| 30 | ### When sibling skills are loaded |
| 31 | |
| 32 | If you see other Astronomer skills loaded (`airflow`, `authoring-dags`, `debugging-dags`, `migrating-airflow-2-to-3`, `analyzing-data`, `checking-freshness`, `tracing-upstream-lineage`, etc.), the user has the full `astronomer-data` plugin. Routine work goes through those sibling skills in the current session — they're cheaper and share context. |
| 33 | |
| 34 | **Reserve this skill for explicit Otto delegation** (user names Otto), with one carve-out below. |
| 35 | |
| 36 | | User intent | Use this skill? | Use instead | |
| 37 | |---|---|---| |
| 38 | | "What DAGs are broken?" | ❌ No | `airflow` skill (`af dags errors`) | |
| 39 | | "Write a new DAG that ingests X" | ❌ No | `authoring-dags` skill | |
| 40 | | "Why did my run fail?" | ❌ No | `debugging-dags` skill | |
| 41 | | "Plan the Airflow 3 upgrade" | ⚠️ Offer Otto first | See carve-out below | |
| 42 | | "Use Otto to plan the AF3 upgrade" | ✅ Yes | This skill | |
| 43 | | "Delegate the AF3 audit to Otto" | ✅ Yes | This skill | |
| 44 | | "Fork an Otto session to try a different approach" | ✅ Yes | This skill | |
| 45 | |
| 46 | #### Carve-out: Airflow 2 → 3 migrations |
| 47 | |
| 48 | Otto's bundled migration capability draws on Astronomer's proprietary compatibility KB (breaking ch |