CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

confluent-cloud-flink-sql

Write and debug Flink SQL that runs on Confluent Cloud, enforcing the CC-vs-Apache-Flink (OSS) dialect boundary. Use when the working directory is a Confluent Cloud Flink workspace, when a Flink SQL statement needs checking before it runs on a CC compute pool, or when the user mentions CC Flink, Confluent Cloud Flink SQL, the `confluent flink` CLI, a CFU compute pool, `CREATE CONNECTION`, or asks to check or debug Flink SQL whose runtime is Confluent Cloud. Also trigger when a Flink SQL question is posed and nothing establishes an Apache Flink OSS runtime. Do NOT trigger for: building or deploying Flink UDFs in Java (UDF/UDTF/PTF — use flink-udf); a full CDC pipeline from a database through Flink into Tableflow/Iceberg/Delta Lake (use confluent-cloud-cdc-tableflow); Kafka Streams topology work (use kafka-streams-programming); or Flink SQL confirmed to run on Apache Flink OSS, not Confluent Cloud.

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 operator-grade skill body: concrete CLI commands, inline dialect fixes, an explicit confirmation gate and validation-first loop, and a cleanly split one-level-deep reference bundle. The main weakness is token efficiency — the requirements-gathering workflow sections repeat 'ask only when it matters' guidance four times and over-specify process Claude already follows.

Suggestions

Collapse the 'Requirements Gathering Guardrails' section and the repeated ask-only-when guidance (stated in the workflow intro, step 1, step 2, and the guardrails section) into a single location — the same rule is currently given four times.

Trim step 1's and step 3's generic bullet lists ('What streaming problem is being solved?', 'Event time vs processing time') down to the semantics that actually differ on Confluent Cloud; Claude already knows how to gather requirements generically.

Move the per-format consume mapping in Verification loop step 4 into references/formats-and-serialization.md (already cited there) and keep only the pointer, since the full mapping table already lives in that file.

DimensionReasoningScore

Conciseness

The Non-negotiables, Red flags, and Verification loop sections are dense and earn their tokens, but the ~120-line Stream Processing Workflow restates generic requirements-gathering behavior Claude already applies ('Ask only questions that materially affect the pipeline design', 'Do not ask for information that is already available in the conversation'), and the 'Requirements Gathering Guardrails' section then repeats that same guidance a fourth time. Not a 2 because nothing teaches background concepts or pads like the bad examples; not a 4 because the workflow repetition exceeds 'minor instances' of over-explanation.

3 / 5

Actionability

Commands are copy-paste ready with explicit placeholders: 'confluent flink statement create <name> --sql "$(cat repro.sql)" --compute-pool <id> --database <cluster> --environment <env> --wait', the consume pipeline with per-format matching, and escalation commands for each failure state ('statement exception list', 'artifact list'). Every red flag includes the CC-correct replacement inline (e.g. 'LATERAL TABLE(UNNEST(...))' → 'use CROSS JOIN UNNEST(...)'), covering the common cases plus failure modes. Not a 4: guidance is fully executable, not executable-with-gaps.

5 / 5

Workflow Clarity

The 8-step workflow is clearly sequenced with explicit validation checkpoints: 'EXPLAIN before CREATE... catches parse/type errors without consuming CFUs', 'Wait for explicit user confirmation before performing resource-modifying operations', and step 8's observe-and-verify with output sampling. Feedback loops for error recovery are explicit ('Statement PENDING > 60s → confluent flink statement exception list', 'If the output is unexpected, inspect the input data and statement configuration before making changes'), and the Red flags list acts as a checklist. Not a 4: checkpoints are explicit and bolded, not merely present.

5 / 5

Progressive Disclosure

The 'Reference files' table gives each of the six bundle files a 'When to load' condition ('Before writing ANY Flink SQL', 'Before running confluent CLI', 'When debugging errors'), all six files exist in references/ and are one level deep with no nested references. Detail (22-trap table, CLI flag schemas, SQL patterns) lives in the bundle while SKILL.md stays the enforcement layer. Not a 4: navigation is exactly the table-with-load-conditions pattern the top anchor describes.

5 / 5

Total

18

/

20

Passed

Description

95%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: third-person, concrete about what it does, and maximally explicit about when to fire — including synonyms, a no-OSS-runtime default, and negative triggers naming the neighboring skills to hand off to. The only sliver of room is that the capability list (write/debug/check) understates the skill's full verification workflow.

DimensionReasoningScore

Specificity

Names the domain and several concrete actions: 'Write and debug Flink SQL that runs on Confluent Cloud, enforcing the CC-vs-Apache-Flink (OSS) dialect boundary' plus 'a Flink SQL statement needs checking before it runs on a CC compute pool'. Not a 5 because the action list stops at write/debug/check rather than comprehensively covering the skill's validation loop and CLI verification; not a 3 because it goes beyond 1-2 actions with only minor gaps.

4 / 5

Completeness

Explicitly answers both questions: 'what' via 'Write and debug Flink SQL that runs on Confluent Cloud, enforcing the CC-vs-Apache-Flink (OSS) dialect boundary', and 'when' via a concrete 'Use when' clause with multiple trigger phrases and a complementary default rule. This is the top anchor verbatim in structure (what + when with concrete triggers), so not a 4.

5 / 5

Trigger Term Quality

Comprehensive natural-term coverage with synonyms and tool names: 'CC Flink, Confluent Cloud Flink SQL, the `confluent flink` CLI, a CFU compute pool, `CREATE CONNECTION`', plus workspace-context and default-catch triggers ('nothing establishes an Apache Flink OSS runtime'). Matches the top anchor's breadth including abbreviation variants; a 4 would require missing natural phrasings, and none are evident.

5 / 5

Distinctiveness Conflict Risk

Clear niche (CC dialect of Flink SQL) with explicit negative disambiguation against adjacent skills: 'Do NOT trigger for: building or deploying Flink UDFs in Java... (use flink-udf); a full CDC pipeline... (use confluent-cloud-cdc-tableflow); Kafka Streams topology work (use kafka-streams-programming); or Flink SQL confirmed to run on Apache Flink OSS'. Conflict risk is minimal; the broad default-catch clause is deliberately scoped, so not a 4.

5 / 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

confluentinc/agent-skills

Path

skills/confluent-cloud-flink-sql/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.