CtrlK
BlogDocsLog inGet started
Tessl Logo

airflow-plugins

Builds Airflow 3.1+ plugins that embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links directly into the Airflow UI. Use when building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface - creating an Airflow plugin, adding a custom UI page or nav entry, building FastAPI-backed endpoints inside Airflow, serving static assets from a plugin, embedding a React app, adding middleware to the API server, creating custom operator extra links, or calling the Airflow REST API from inside a plugin; also when AirflowPlugin, fastapi_apps, external_views, react_apps, or plugin registration come up.

74

Quality

92%

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

85%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 strong, highly actionable code skill: executable examples throughout, a clear step sequence with checklists and a pitfalls table, and a sharp focus on Airflow 3-specific rules (no Flask, relative paths, asyncio.to_thread). Its weaknesses are moderate length (591 lines) with some duplicated content and no use of reference files to offload the API-pattern catalog.

Suggestions

Move the Step 5 endpoint catalog (trigger/pause/delete, DAG runs, task instances, logs, streaming proxy) and the Step 4 JWT/auth details into a references/api-patterns.md file, leaving SKILL.md as a lean overview with well-signaled links — progressive_disclosure is the lowest-scoring dimension.

Remove the duplicated MYPLUGIN_HOST/USERNAME/PASSWORD env-var code block in Step 7 (it already appears verbatim in Step 4), and consolidate the restart guidance that is currently repeated in the critical block, Step 7, and the pitfalls table.

Consider splitting the common-pitfalls table and per-component debug commands (astro dev logs) into a short troubleshooting section or reference file so the core workflow stays scannable.

DimensionReasoningScore

Conciseness

The body is dense and code-forward with essentially no explanation of concepts Claude already knows, but it is 591 lines with real redundancy: the MYPLUGIN_HOST/USERNAME/PASSWORD env-var block appears in both Step 4 and Step 7, and restart guidance is repeated across the critical block, Step 7, and the pitfalls table. That keeps it at anchor 4 ("efficient; minor instances that could be trimmed") rather than 5.

4 / 5

Actionability

Nearly everything is copy-paste-ready executable code: the registration skeleton, JWT token caching with double-checked locking, the asyncio.to_thread wrapping pattern for every SDK call, macros/middleware/operator-link/react registration examples, and concrete CLI debug commands (astro dev logs --api-server, airflow plugins). This matches anchor 5 — executable examples covering the common cases; not 4, since there are no meaningful gaps.

5 / 5

Workflow Clarity

Steps 1–7 are clearly sequenced with an explicit pre-code verification checklist, per-component restart requirements, "Verify the plugin loaded: open Admin > Plugins" as a checkpoint, and a problem/cause/fix pitfalls table that provides error-recovery feedback loops. This matches anchor 5 (explicit validation steps, feedback loops, checklists); not 4, since checkpoints are explicit rather than merely present.

5 / 5

Progressive Disclosure

There are no bundle files at all (no references/, scripts/, assets/), and roughly 200 lines of API-endpoint patterns and auth detail (Steps 4–5) sit inline in a 591-line SKILL.md where a references/ file would offload them. Section headers and the external-links References section give real structure, so this is above anchor 2 ("no section headers"), but the large inline catalog matches anchor 3 ("content that should be separate is inline") better than anchor 4.

3 / 5

Total

17

/

20

Passed

Description

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

An exemplary description: it states comprehensive concrete capabilities in third person and provides an explicit, detailed 'Use when' clause with both natural-language triggers and code-level identifiers. It is on the long side, but every clause adds a distinct trigger rather than padding.

DimensionReasoningScore

Specificity

The description enumerates concrete actions across all plugin component types — "embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links" — with comprehensive coverage and third-person voice ("Builds"), matching the anchor-5 example rather than anchor 4, which expects coverage gaps.

5 / 5

Completeness

It explicitly answers both what ("Builds Airflow 3.1+ plugins that embed…") and when ("Use when building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface…") with concrete trigger phrases, exactly matching the anchor-5 example structure; not 4, since the when-clause is fully explicit.

5 / 5

Trigger Term Quality

It covers natural phrases users would say ("creating an Airflow plugin", "adding a custom UI page or nav entry", "embedding a React app", "serving static assets") plus code-level identifiers ("AirflowPlugin, fastapi_apps, external_views, react_apps"), giving comprehensive coverage including synonyms — the anchor-5 bar.

5 / 5

Distinctiveness Conflict Risk

The scope is tightly limited to plugin/UI work inside Airflow 3.1+ ("anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface"), a clear niche with distinct triggers and minimal overlap with generic Airflow skills.

5 / 5

Total

20

/

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

skill_md_line_count

SKILL.md is long (592 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

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.