CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

prefect-data-passing-to-orchestra

Use this skill when a Prefect flow passes data between tasks via return values (.result()), task.submit() futures, Prefect Artifacts, or .map() for fan-out. Triggers: any Prefect flow where a downstream task consumes the return value of an upstream task, any .map() usage, any Prefect Artifact that is read by a downstream step, or any conditional branch driven by a task's return value.

Quality

73%

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/prefect-data-passing-to-orchestra/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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, high-signal body: it concentrates almost exclusively on Orchestra-specific non-obvious mechanics (explicit set_output opt-in, JSON-string environment_variables, matrix fan-out, triple-quote JSON escaping) with executable examples, a sequenced conversion checklist, and a full before/after. Weaknesses are minor — a duplicated alerts-pointer stub, a couple of non-self-contained code snippets, and no explicit post-conversion verification step.

DimensionReasoningScore

Conciseness

Nearly every token carries non-obvious, Orchestra-specific information — 'set_outputs: true is REQUIRED... otherwise client.set_output() calls are silently ignored', 'environment_variables is a single JSON string, not a nested YAML map', the triple-quote json.loads workaround — with no padding or explanation of concepts Claude already knows. Minor trimming is possible: the 'Adding Alerts' section duplicates the prefect-alerts-to-orchestra pointer already given in References, and a few Gotchas restate the parameter-mapping table (e.g., the DataFrame staging row), which keeps it just below lean 5.

4 / 5

Actionability

The guidance is largely copy-paste ready: complete YAML blocks for matrix fan-out and SQL auto-capture, an executable OrchestraSDK instantiation snippet, exact template expressions, and a concrete before/after pair. Two small gaps hold it below 5: the Python snippet calls run_query() without definition, and the 'after' inline code references `count` and `send_slack_message` without mapping the PENDING_COUNT env var into a variable, so that example would not run as written.

4 / 5

Workflow Clarity

'Conversion Steps' is a well-sequenced checklist (list dependencies → classify values by type → convert per type → wire downstream references), and the Gotchas function as implicit failure checkpoints flagging the silent-failure mode ('without set_outputs: true, calls are silently ignored'). Missing an explicit post-conversion validation step (e.g., confirm outputs resolved non-empty or dry-run the pipeline) leaves a minor validation gap, so it fits anchor 4 rather than 5; the migration is not a destructive/batch operation, so the workflow-clarity cap of 3 does not apply.

4 / 5

Progressive Disclosure

The single-file body (no references/, scripts/, or assets/ bundle exists) is organized into clear, well-ordered sections — Overview, Parameter Mapping, YAML Structure, Conversion Steps, Before/After, Gotchas, References — with external links one level deep and plainly signaled. The duplicated 'Adding Alerts' stub (restating a pointer already in References) is a minor organization gap that keeps it at 4 rather than 5.

4 / 5

Total

16

/

20

Passed

Description

61%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 well-constructed trigger description: the 'when' is explicit, multi-faceted, and uses concrete Prefect API terms that a user would naturally say. Its main weakness is that the 'what' is completely absent — the description never states the skill converts Prefect data passing to Orchestra's explicit set_output/template model, so a reader cannot tell what the skill does. Specificity and completeness are consequently capped in the middle of the scale.

Suggestions

Open with a 'what' clause stating the skill's action, e.g. 'Converts Prefect inter-task data passing (return values, futures, Artifacts, .map() fan-out) to Orchestra's explicit set_output()/template-expression model. Use when...'

Add migration-intent trigger terms users would actually say, such as 'migrate Prefect flow to Orchestra', 'convert Prefect to Orchestra', or 'Prefect to Orchestra migration'.

Sharpen the boundary with sibling skills: state that observability-only Artifacts and notification/alert patterns belong to prefect-alerts-to-orchestra, keeping only consumer-read Artifacts and data-passing triggers here.

DimensionReasoningScore

Specificity

The description enumerates concrete trigger patterns ('return values (.result()), task.submit() futures, Prefect Artifacts, or .map() for fan-out', 'conditional branch driven by a task's return value') rather than generic language, but it states no action the skill itself performs — what it does (convert Prefect data passing to Orchestra) is never named. It sits between anchor 2 (domain named, no real actions) and anchor 3 (domain plus concrete actions); the concrete pattern enumeration keeps it above 2, the absent capability statement keeps it below 4.

3 / 5

Completeness

The 'when' is answered explicitly and comprehensively ('Use this skill when a Prefect flow passes data between tasks... Triggers: any Prefect flow where a downstream task consumes the return value...'), but the 'what' — what the skill actually does — is entirely unstated; only the skill name hints at it, and per the guidelines we score only the description itself. A missing 'what' caps completeness at 3, mirroring the cap for a missing 'Use when' clause; the exceptional trigger specificity earns the cap rather than 2.

3 / 5

Trigger Term Quality

Good coverage of natural terms a user working with Prefect would say: 'Prefect flow', 'passes data between tasks', 'return values', '.map()', 'fan-out', 'downstream task', 'Prefect Artifact'. Not a 5 because migration-intent phrasings ('convert/migrate Prefect flow to Orchestra', 'Prefect to Orchestra') and the target platform's name are missing, leaving a few natural entry points uncovered.

4 / 5

Distinctiveness Conflict Risk

Triggers are narrowly scoped to Prefect inter-task data passing (e.g., 'any Prefect Artifact that is read by a downstream step' carefully excludes observability-only Artifacts), giving a clear niche with minimal conflict risk. Minor overlap remains with sibling migration skills like prefect-alerts-to-orchestra, which could also claim Artifact and conditional-branch triggers, so it is 'mostly distinct' rather than fully conflict-free.

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

Path

skills/migrate-to-orchestra/skills/prefect-data-passing-to-orchestra/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.