CtrlK
BlogDocsLog inGet started
Tessl Logo

dag-factory

Authors Apache Airflow DAGs declaratively from dag-factory YAML configs. Use when building DAGs declaratively from YAML via dag-factory; creating/editing dag-factory templates/YAML configs,reating/editing dag-factory YAML configs, defaults, dynamic tasks, datasets, or callbacks; or validating dag-factory configurations; upgrading or re-pinning dag-factory.

70

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

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 highly actionable, well-sequenced body with executable YAML/CLI examples and strong validation and troubleshooting loops. Its main weaknesses are the dangling reference/migration.md link (the file does not exist in the bundle) and a monolithic ~490-line structure that inlines detailed content better split into reference files.

Suggestions

Create the missing reference/migration.md (or fix the five dangling [reference/migration.md] links to the real path) — the body gates pre-1.0 guidance on this file, so its absence breaks the skill's own workflow.

Move detailed, less-frequent content (callback examples, conditional dataset scheduling, Troubleshooting) into references/ files with clearly signaled one-level-deep links to cut SKILL.md's inline length.

Trim redundant material: the duplicated trigger text in the header note vs. Before Starting, repeated version caveats, and near-duplicate full YAML examples (e.g. producer/consumer dataset DAGs).

DimensionReasoningScore

Conciseness

The ~490-line body is dense with dag-factory-specific knowledge Claude cannot be assumed to know (list-vs-dict task format, `+task_id` vs `task_id.output`, `__type__` syntax, `__and__`/`__or__` dataset schedules) and mostly avoids explaining concepts Claude already knows. It runs slightly long: several near-duplicate full YAML blocks (e.g. the producer/consumer dataset DAGs, three callback styles) could be trimmed, and version caveats are repeated across the header, Before Starting, and Defaults sections. Not score 5 (every token earning its place), well above score 3.

4 / 5

Actionability

Nearly everything is copy-paste executable: a complete loader script (load_dags.py), full YAML examples for every feature, exact CLI commands ("dagfactory lint dags/", "dagfactory convert <path> --override"), and cause→fix pairs in Troubleshooting. This matches the score-5 anchor of executable, common-case-covering guidance; not score 4 because there are no meaningful gaps.

5 / 5

Workflow Clarity

The workflow is explicitly sequenced ("Execute steps in order"), with a Before Starting checklist, a request-routing table, a validation workflow (lint → Airflow parse), a cause/fix troubleshooting section, and a final Verification Checklist. Feedback loops for error recovery are present ("If validation fails: review, fix, run again" equivalents via Troubleshooting), matching the score-5 anchor.

5 / 5

Progressive Disclosure

Section structure and navigation within the file are good (routing table, clear headings), but the body references [reference/migration.md](reference/migration.md) five times — including gating guidance on it ("see reference/migration.md before applying any guidance") — and no such file exists in the bundle (no references/, scripts/, or assets/ directories at all). Long-form content that belongs in reference files (three full callback examples, conditional dataset scheduling, troubleshooting) is inlined in a ~490-line SKILL.md. Fits the score-3 anchor (structure present, but references not resolvable and separable content is inline); not score 4 because a referenced path is broken, which is a navigation failure, not a minor organization gap.

3 / 5

Total

17

/

20

Passed

Description

87%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 with an explicit, well-scoped 'Use when' clause, concrete capability areas, and library-specific triggers that make it highly distinguishable. The main defects are a garbled duplicated phrase in the trigger clause and a few missing natural trigger variants.

DimensionReasoningScore

Specificity

The 'what' is concrete ("Authors Apache Airflow DAGs declaratively from dag-factory YAML configs") and the trigger clause enumerates specific capability areas ("defaults, dynamic tasks, datasets, or callbacks; ... validating dag-factory configurations; upgrading or re-pinning"). It stops just short of the score-5 anchor's multiple distinct concrete actions (no lint/schedule/convert-style verbs in the what-clause), and is clearly above score 3, which expects only 1-2 actions with limited coverage.

4 / 5

Completeness

Explicitly answers both questions: what ("Authors Apache Airflow DAGs declaratively from dag-factory YAML configs") and when ("Use when building DAGs declaratively from YAML via dag-factory; creating/editing ... defaults, dynamic tasks, datasets, or callbacks; or validating ...; upgrading or re-pinning dag-factory") — a clear 'Use when' clause with concrete trigger phrases, matching the score-5 anchor exactly. Not score 4, since the 'when' is explicit and specific rather than merely present.

5 / 5

Trigger Term Quality

Natural terms are well covered: "building DAGs ... from YAML via dag-factory", "creating/editing ... YAML configs", "defaults, dynamic tasks, datasets, callbacks", "validating", "upgrading or re-pinning". A few natural phrases users would say are missing (e.g. "convert a Python DAG to YAML", "lint", "schedule"), and there is a garbled duplication ("templates/YAML configs,reating/editing dag-factory YAML configs") that muddies one trigger. Solidly above score 3, below score 5's comprehensive synonym/extension coverage.

4 / 5

Distinctiveness Conflict Risk

The description is anchored to a named library ("dag-factory") with library-specific triggers (dag-factory configs, defaults, datasets, callbacks, re-pinning), occupying a clear niche distinct from generic Airflow-DAG-authoring skills and unlikely to trigger for the wrong skill. Matches the score-5 anchor; the only adjacent risk (overlap with a pure-Python Airflow DAG skill) is resolved by the 'declaratively from YAML' qualifier.

5 / 5

Total

18

/

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

relative_links

Relative link issues: 4 missing

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.