CtrlK
BlogDocsLog inGet started
Tessl Logo

airflow-xcoms-to-orchestra

Use this skill when an Airflow DAG uses xcom_push, xcom_pull, or the TaskFlow API @task return values to pass data between tasks. Triggers: any DAG with ti.xcom_push(), context['ti'].xcom_pull(), @task decorated functions that return values, or BranchPythonOperator decisions driven by upstream XCom values.

60

Quality

71%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/migrate-to-orchestra/skills/airflow-xcoms-to-orchestra/SKILL.md
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.

The body is a strong, highly actionable reference: concrete executable code, a precise pattern-mapping table, a full before/after conversion, and a Gotchas section that catches the real failure modes. Minor improvements are possible by deduplicating the SDK-instantiation warning and adding an explicit post-migration validation step.

DimensionReasoningScore

Conciseness

Mostly lean with a tight pattern-mapping table and purposeful code, but the SDK-instantiation warning is repeated three times ("a task explicitly sets named outputs", "must instantiate the OrchestraSDK client", the Gotcha restating it) and the opening defines what Airflow XComs are — a concept Claude already knows. Anchor 4: minor over-explanation that could be trimmed.

4 / 5

Actionability

Fully executable, copy-paste-ready guidance: exact imports ("from orchestra_sdk.orchestra import OrchestraSDK", "OrchestraSDK(api_key=os.environ.get('ORCHESTRA_API_KEY'))"), the required "set_outputs: true" parameter, concrete ${{ }} expression syntax, an 8-row integration support table, and a complete before/after DAG conversion. Common cases are covered.

5 / 5

Workflow Clarity

A clear sequence (map patterns → set outputs with set_outputs: true → reference via ${{ }} expressions → worked before/after example) and the Gotchas act as checkpoints for the main failure modes (silently-ignored set_output, task-ID format mismatch, triple-quote JSON wrapping). Not 5 because there is no explicit validation step for the migrated pipeline (e.g. verifying outputs resolve); not 3 because both the sequence and the error checkpoints are substantially present.

4 / 5

Progressive Disclosure

Well-organized sections with clear headers, external references (Orchestra docs URLs) signaled at one level, and no bundle files to split further. The integration-support table and full before/after example are slightly heavy inline but central and compact — anchor 4: good structure with minor organization gaps.

4 / 5

Total

17

/

20

Passed

Description

60%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.

The description has excellent, comprehensive trigger terms for the Airflow XCom domain, but it is missing the 'what' — it never states that the skill converts XCom patterns to Orchestra outputs (Orchestra is not mentioned at all). Adding a one-clause statement of the action would lift both completeness and specificity.

Suggestions

State the 'what' explicitly: prepend an action clause such as "Converts Airflow XCom data-passing patterns to Orchestra's typed outputs system" before the 'Use when' clause.

Mention 'Orchestra' in the description so users searching for the target platform naturally find the skill and the skill's purpose is self-describing.

Consider adding 'passing data between tasks' variants users might phrase naturally (e.g. 'sharing values between tasks') — coverage is already strong, so this is a minor refinement.

DimensionReasoningScore

Specificity

Names the domain with concrete technical tokens ("xcom_push, xcom_pull, or the TaskFlow API @task return values to pass data between tasks", "BranchPythonOperator decisions driven by upstream XCom values") but never states what the skill does — the Orchestra migration action is entirely unstated, matching anchor 3 (concrete domain coverage, not comprehensive). Not 2 because the surface described is specific, not generic; not 4 because the skill's own actions are missing.

3 / 5

Completeness

The 'when' is explicit twice ("Use this skill when an Airflow DAG uses..." and "Triggers: any DAG with ti.xcom_push()...") but no 'what' is present — the description never mentions Orchestra, outputs, or any action the skill performs. This matches anchor 2 (only 'when' present without 'what') rather than 3, which requires a clear 'what'.

2 / 5

Trigger Term Quality

Comprehensive natural terms and synonyms: "xcom_push, xcom_pull", "TaskFlow API @task return values", "ti.xcom_push()", "context['ti'].xcom_pull()", "BranchPythonOperator", and "XCom values" — exactly what a user working on an Airflow DAG would say.

5 / 5

Distinctiveness Conflict Risk

A clear niche (Airflow XCom patterns for Orchestra) with distinct API-level triggers, minimizing conflict with other skills. Minor overlap risk: it could trigger for plain Airflow XCom work with no Orchestra-migration intent.

4 / 5

Total

14

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

referenced_paths_exist

Referenced path issues: 3 missing

Warning

Total

15

/

16

Passed

Repository
orchestra-hq/orchestra-skills
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.