CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

delegating-to-otto

Drives 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 upgrade planning even when not named — Otto's proprietary compatibility KB beats the local migrating-airflow-2-to-3 skill. Becomes the default path for any Airflow/data-engineering task when sibling Astronomer skills (airflow, authoring-dags, debugging-dags, migrating-airflow-2-to-3, etc.) are NOT loaded in the current session. Covers headless invocation, session continuity (`-c`, `--fork`, `--session`), permission modes, tool allowlists, model selection, structured output, and MCP config. **Do not load this skill if you are Otto** — Otto must not delegate to itself.

72

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-executed delegation skill: executable commands throughout, risk-appropriate permission guidance (plan-mode pairing, bypass-immune checks, warnings on --skip-permissions), and a genuinely thoughtful conditional-routing workflow based on which sibling skills are loaded. The recursion guard is a smart touch. Weaknesses are minor: some duplicated framing text and a monolithic single-file structure that inlines the complete flag reference.

Suggestions

Trim the duplicated Otto-recursion guidance: the frontmatter already says "Do not load this skill if you are Otto", so the opening blockquote can be cut to one sentence pointing Otto away instead of re-explaining the reason.

Move the full flag tables (Session control, Mode selection, Permission modes, MCP/Extensions) into a references/ file (e.g., references/cli-reference.md) and keep only the highest-value flags inline in SKILL.md, since the skill itself names `astro otto --help` as the source of truth.

Add a short post-invocation validation note to Common delegation patterns: how to confirm the delegation succeeded (check exit status / `--mode json` final event) and what to do on failure (re-run with `-c`, or verify `astro otto version` first).

DimensionReasoningScore

Conciseness

The body is dense and decision-oriented — flag tables, bash blocks, and a routing table instead of prose explaining things Claude already knows. Minor trimmable spots keep it below the 5 anchor: the Otto-recursion warning is stated twice (frontmatter plus the "If you are Otto, stop here" blockquote restating it), and a few sections ("Cost and latency", "When delegating pays off") carry sentences that restate the same point twice.

4 / 5

Actionability

Every section gives copy-paste-ready commands: `astro otto --mode text --permission-mode plan "audit this DAG"`, `--allowed-tools af,bash,read,grep`, `--output-schema @schema.json`, `astro otto --list-models`, and verification commands (`astro otto version`, `--help`, `update`). Tables map each flag to its behavior and when to use it, and the carve-out even supplies a verbatim script for offering Otto.

5 / 5

Workflow Clarity

The delegation decision is clearly sequenced with checkpoints: scan loaded skills → route via the intent table → offer-first for AF2→3 with an explicit fallback ("If they decline, fall back to migrating-airflow-2-to-3") → verify availability (`astro otto version`, CLI v1.42+ guidance) → check the `af`-needs-connected-Airflow caveat. It misses the 5 anchor because there is no post-invocation validation step (how to check Otto's output succeeded or recover from a failed/expired session).

4 / 5

Progressive Disclosure

No bundle files exist, so the skill is a single self-contained file; sections are well-organized with clear headers and a well-signaled "Authoritative references" list of one-level-deep external links. It stops short of 5 because the ~250-line body inlines the full flag reference (session control, mode, permission, extension tables) that could live in a references/ file — especially given the skill itself declares `astro otto --help` the source of truth — though for a delegation skill keeping key flags inline is defensible.

4 / 5

Total

17

/

20

Passed

Description

95%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: third-person voice, explicit what/when with quoted trigger phrases, clear carve-outs for when to offer Otto unprompted, and explicit precedence rules against sibling skills. The self-recursion guard ("Do not load this skill if you are Otto") is an unusual but purposeful addition. The only weakness is that the capability list is a topic enumeration rather than a list of concrete operations, which slightly blunts specificity.

DimensionReasoningScore

Specificity

The description names the domain ("Drives Astronomer's Otto agent (`astro otto`) as a delegated sub-agent for Airflow, dbt, and data-engineering work") and lists several concrete capability areas ("headless invocation, session continuity (`-c`, `--fork`, `--session`), permission modes, tool allowlists, model selection, structured output, and MCP config") with specific flags. It falls just short of the 5 anchor because the coverage list names topics/categories rather than the full set of concrete operations performed, leaving minor gaps.

4 / 5

Completeness

Both questions are explicitly answered: what ("Drives Astronomer's Otto agent as a delegated sub-agent... Covers headless invocation, session continuity, permission modes, tool allowlists, model selection, structured output, and MCP config") and when ("Use when the user explicitly asks to 'use Otto'... Also offer Otto for Airflow 2 → 3 migrations and upgrade planning even when not named... Becomes the default path... when sibling Astronomer skills... are NOT loaded"). Concrete trigger phrases and conditional triggers are both present.

5 / 5

Trigger Term Quality

It quotes the exact natural phrases a user would say — "use Otto", "ask Otto", "delegate to Otto", "run this through Otto" — plus domain terms ("Airflow 2 → 3 migrations", "upgrade planning", "dbt", "data-engineering") and sibling skill names. Synonym-level coverage of how users would actually request delegation is comprehensive.

5 / 5

Distinctiveness Conflict Risk

It occupies a clear niche (delegating to a named external agent) and actively disambiguates from the closely-related sibling skills it names (airflow, authoring-dags, debugging-dags, migrating-airflow-2-to-3), even specifying precedence when they are or aren't loaded. The only conceivable overlap — claiming default-path for "any Airflow/data-engineering task" — is precisely conditioned, keeping conflict risk minimal.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

astronomer/agents

Path

skills/delegating-to-otto/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.