CtrlK
BlogDocsLog inGet started
Tessl Logo

airflow-state-store

Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key/value stores (`task_state_store`, `asset_state_store`) and the crash-safe `ResumableJobMixin`. Use when the user asks about task state store, checkpointing in tasks, persisting state across retries, job IDs surviving worker crashes, watermarks, asset metadata, resumable tasks, crash-safe operators, or "what's new in Airflow 3.3". Also use proactively when reading a DAG that uses Variables or XCom for intra-task coordination state (flag the anti-pattern), or when reviewing any DAG that submits a job to an external system (Databricks, Snowflake, BigQuery, Redshift, Spark, dbt Cloud, EMR, AWS Batch, etc.) and waits for it to finish, whether as one submit-and-wait operator or split into submit + sensor/polling tasks; covers `wait_for_termination`, `deferrable`, `durable`, and hand-rolled polling sensors. State-persistence pieces require Airflow 3.3+; submit+poll architecture guidance applies on any version.

71

Quality

86%

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

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

Highly actionable and well-sequenced content with strong validation gates (version check, decision tables, safety checklist), but it is a monolithic ~400-line file with zero progressive disclosure — API and config reference material is inlined rather than split into reference files — and Section 5/6 repeat the same durable/submit-task nuances several times, which costs tokens without adding guidance.

Suggestions

Move Section 7's configuration reference and Section 3's full API call-signature block into a references/ file (e.g. references/api.md), keeping one canonical example inline and linking the rest — this converts the monolithic file into a lean overview with one-level-deep references.

Consolidate the repeated 'poll/sensor task needs nothing, submit task still needs durable=True' point into one authoritative statement in Section 5 and have Sections 2 and 6 link to it instead of restating it three more times.

Trim Section 6 to the decision rule (Triggerer → collapse with both flags explicit; no Triggerer → split by worker-slot cost) plus one code example per branch, cutting the three paragraphs that re-derive the crash-safety-vs-architecture distinction.

DimensionReasoningScore

Conciseness

The material is novel (Airflow 3.3 AIP-103 APIs) so it isn't padding with things Claude already knows, but the body restates the same nuances repeatedly: the "poll/sensor task doesn't need the mixin but the submit task still does" point appears in Section 5's scope check, its table row, and again twice in Section 6; the `wait_for_termination=True` caveat is made three times in Section 6. Anchors 3 vs 4: this is more than "minor instances of over-explanation that could be trimmed" — Section 6 in particular re-derives the same tradeoff in three separate paragraphs, fitting the "mostly efficient but could be tightened" anchor better.

3 / 5

Actionability

Fully executable, copy-paste-ready material throughout: complete `@task` examples for both stores, the full `ResumableJobMixin` implementation skeleton with all six methods, the API call signatures with `NEVER_EXPIRE`/retention variants, a runnable version check (`af config version`), an INI config reference, and before/after anti-pattern pairs for every recommendation.

5 / 5

Workflow Clarity

Clear sequenced workflow with explicit validation checkpoints: a version-gate first step with branch instructions for pre-3.3 (what to drop, what still applies), a primitive-selection table, an ordered anti-pattern detection procedure with a "show a before/after snippet" instruction, retry-behavior tables, and a closing safety checklist. The version check acts as a validation checkpoint before any recommendation is made.

5 / 5

Progressive Disclosure

No bundle files exist (no references/, scripts/, or assets/), so everything — the full API reference block in Section 3, the six-method mixin implementation, and the Section 7 config reference — is inlined in a single ~400-line SKILL.md. Internal structure is good (clear sections, tables, cross-links), but reference material that clearly belongs in separate files is inlined with no one-level-deep references at all, matching the "some structure but content that should be separate is inline" anchor rather than the well-split anchor 4/5 examples.

3 / 5

Total

16

/

20

Passed

Description

96%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: concrete third-person capabilities, rich natural-language trigger terms, explicit "Use when" guidance including proactive triggers, and a clear version boundary. The only weakness is that the broad proactive review trigger slightly overlaps the domain of a general DAG-review/authoring skill.

DimensionReasoningScore

Specificity

Multiple specific concrete actions in third person: "Persists task and asset state across retries and DAG runs", "crash-safe `ResumableJobMixin`", flagging the Variables/XCom anti-pattern, and reviewing DAGs that submit jobs to named external systems (Databricks, Snowflake, BigQuery, Redshift, Spark, dbt Cloud, EMR, AWS Batch). Coverage of the domain is comprehensive — the two stores, the mixin, and the version boundary are all named explicitly.

5 / 5

Completeness

Clearly answers both questions: the "what" ("Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key/value stores") and an explicit "Use when the user asks about..." clause with concrete triggers, plus a proactive-use clause and a version-scope boundary ("State-persistence pieces require Airflow 3.3+; submit+poll architecture guidance applies on any version").

5 / 5

Trigger Term Quality

Comprehensive natural trigger phrases users would actually say: "task state store", "checkpointing in tasks", "persisting state across retries", "job IDs surviving worker crashes", "watermarks", "resumable tasks", "crash-safe operators", and "what's new in Airflow 3.3". It also includes concrete keyword variants (`wait_for_termination`, `deferrable`, `durable`) and a full list of external-system names, matching the anchor's expectation of synonyms and extensions.

5 / 5

Distinctiveness Conflict Risk

Clear niche (Airflow AIP-103 state persistence) with distinct, specific triggers that would not fire for unrelated skills. Minor overlap risk remains: the broad proactive trigger "when reviewing any DAG that submits a job to an external system ... and waits for it to finish" could pull in general DAG-review requests that belong to a general authoring/review skill, so it is mostly rather than fully distinct.

4 / 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
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.