Create Confluent-specific skills for external users. Use this skill when users want to create, build, or author a new skill related to Confluent Cloud, Confluent Platform, Apache Kafka, WarpStream, Flink, Connectors, Schema Registry, Tableflow, CDC pipelines, or any Confluent product. Skills can be use-case focused (like data enrichment, CDC to Tableflow, stream processing workflows) or component-specific (like a Flink skill, Schema Registry skill, or Connector skill). Do NOT use this skill when users want to directly use Confluent products (e.g., build a pipeline, write a producer, deploy Flink SQL) — use the appropriate product-specific skill instead. This skill is specifically for creating new skills, not for using existing ones.
70
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
A specialized skill creator for building Confluent product skills that are tested against real Confluent environments (local, platform, cloud, or WarpStream).
This skill extends the base skill-creator workflow with Confluent-specific requirements:
confluent-kafka[avro,json,protobuf], requests, jsonschema, python-dotenv Python packages (see scripts/requirements.txt)Use this skill when a user wants to create a skill for external users that involves:
Apply these structural principles to every skill you create. They extend the base skill-creator guidance; the spec-compliance checks in Step 4 enforce the specifics, while this section is the mental model.
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter (name, description required)
│ └── Markdown instructions
└── Bundled resources (optional)
├── scripts/ — executable code for deterministic/repetitive tasks
├── references/ — docs loaded into context as needed
└── assets/ — files used in output (templates, icons, fonts)Skills load context in three tiers, so the model only pays for what it needs:
name + description) — always in context (~100 words). This is the trigger; invest here.Word counts are approximate — go longer when a skill genuinely needs it.
Key patterns:
When a skill spans multiple domains/frameworks, organize by variant and let the model read only the relevant file — the same pattern as cross-platform Confluent skills (references/confluent-cloud.md, references/warpstream.md, …):
cloud-deploy/
├── SKILL.md # workflow + variant selection
└── references/
├── aws.md
├── gcp.md
└── azure.mdA skill's behavior must not surprise a user who has read its description. Skills must never contain malware, exploit code, or anything that could compromise system security, and must not facilitate unauthorized access, data exfiltration, or other malicious activity. Benign creative framing (e.g. "roleplay as X") is fine — misleading or malicious skills are not.
Understand what the user wants to build. Skills can be either use-case focused or component-specific — both are valid.
Use-case focused — solves a specific end-to-end problem:
Component-specific — covers a Confluent component's capabilities:
If the user's request is ambiguous, ask:
"What should this skill cover? It can be a specific use case (e.g., 'CDC pipeline from Postgres to Iceberg') or focused on a component (e.g., 'Flink SQL skill'). What's the scope you have in mind?"
After understanding scope, determine platform targeting:
"Which platforms should this skill support?
- All supported platforms (Confluent Cloud, Confluent Platform, Apache Kafka, WarpStream)
- Specific platform only (e.g., Confluent Cloud only, WarpStream only)"
If platform-specific:
name field (e.g., confluent-cloud-cdc-tableflow, warpstream-producer-optimization)If cross-platform:
references/<platform>.md files:
references/confluent-cloud.md — Cloud-specific config, API keys, managed servicesreferences/confluent-platform.md — Self-managed specifics, security configreferences/apache-kafka.md — OSS defaults, no managed featuresreferences/warpstream.md — Object-storage architecture, config overridesreferences/warpstream.md and apply overrides"Once you understand scope and platform, proceed to the interview.
Follow the base skill-creator process for capturing intent and writing the skill draft. Ask about:
What should this skill enable users to do?
When should it trigger? (phrases users would say)
What components are involved? (topics, schemas, Flink, connectors, etc.)
How should the skill interact with Confluent? Ask the user:
"How should this skill interact with Confluent?
- MCP tools (via Confluent MCP server — discover, manage, operate Confluent resources)
- CLI (Confluent CLI —
confluent kafka topic create,confluent flink statement create, etc.)- REST APIs (Confluent Cloud API, Schema Registry API, Kafka REST Proxy)
- Client libraries (confluent-kafka-python, Java clients, etc.)
- Combination (e.g., MCP for discovery + CLI for provisioning + client libs for data)"
Based on the answer, the created skill must include:
What's the expected output? (working pipeline, sample data, SQL statements, etc.)
When writing the skill:
scripts/ directory).md form of a docs.confluent.io page over .html when it exists (docs.confluent.io serves clean Markdown at the same path, which is easier for agents to consume), and verify every link resolves before shipping:
For Flink SQL syntax, see [Confluent Flink SQL Reference](https://docs.confluent.io/cloud/current/flink/reference/overview.md)The created skill MUST include a plan-before-execute step. Before the skill performs any operations (creating topics, registering schemas, deploying Flink statements, etc.), it must:
See plan-template.md for the plan format with interaction method examples.
Before proceeding to testing, validate the created skill against the Agent Skills specification.
name: required, max 64 chars, lowercase letters + numbers + hyphens only, no consecutive hyphens, must match parent directory namedescription: required, max 1024 chars, must describe both what the skill does AND when to use itname (e.g., confluent-cloud-cdc-tableflow)metadata: must include author: confluent, version (semver string), and last_updated (YYYY-MM-DD)compatibility: recommended if the skill requires specific packages, CLI tools, or environment accessBefore finalizing the description, check for unintended overlap with existing skills in the repo:
skills/*/SKILL.md in the target repo and extract each skill's description: fieldreferences/evals/evals.json — at least one test case per primary use case, following this format:
{
"skill_name": "skill-name",
"evals": [
{
"id": 1,
"prompt": "realistic user prompt (≥40 chars, specific context, not abstract)",
"expected_output": "description of success",
"files": [],
"assertions": [
"Specific, verifiable check with a path, identifier, or NOT clause",
"Another assertion encoding hard-won correctness"
]
}
]
}confluent-skill-reviewer):
assertions (array of strings) — this is the repo standard. Do NOT use expectations, and do NOT use object-form entries ([{id, type, description, …}]); check_eval_schema.py flags both as blockingfiles field (empty array [] if no fixtures)NOT clauses, or quoted CLI flags. Vague assertions like "The code is well written" will be flaggedexample.com/.example domains, 555-01xx phone numbers, and obvious placeholders. See PII and synthetic data; the confluent-skill-reviewer blocks violations.env.template or credentials.yaml.template if the skill requires credentialsreferences/<platform>.md files if cross-platform (one per supported platform)# If skills-ref is available
skills-ref validate ./created-skillIf validation fails: fix issues and re-validate. Do not proceed to testing until the skill passes.
Ask the user which environment to test against:
"Which Confluent environment should we test against?
- Local Confluent (Docker, for development)
- Confluent Platform (self-managed on-prem)
- Confluent Cloud (managed SaaS)
- WarpStream (Kafka-compatible, object-storage-backed)
Note: If this skill targets a specific platform, we must test against that platform."
Important rule: If the skill is designed for a specific platform, tests MUST run against that platform.
Credentials may live in a .env file or a YAML file (credentials.yaml) — the rules below apply to whichever format the skill uses.
CRITICAL: Never read, display, or log credential files (.env or credentials.yaml) or their contents. See confluent-best-practices.md for the full security policy. Key rules:
cat, Read, head, grep, etc. on .env or credentials.yaml.env: reference variables by name (e.g., $BOOTSTRAP_SERVERS), never read their values; verify with test -n "$CLUSTER_API_KEY"credentials.yaml: load it inside the script/process that consumes it (e.g., a YAML parser at runtime), never echo parsed values to logs or stdout.gitignore (.env, credentials.yaml)CRITICAL: Use synthetic data only — never commit real customer PII or secrets. Eval prompts, fixtures, sample records, and reference examples must use fabricated data (example.com emails, 555-01xx phone numbers, obviously fake ids). Never embed real SSNs, Luhn-valid payment card numbers, AWS keys, or private key material. See PII and synthetic data. You can verify a skill directory with python3 skills/confluent-skill-reviewer/scripts/scan_pii.py <skill-path> before packaging.
See credentials reference for environment-specific credential templates — available in both .env and YAML (credentials.yaml) form — covering Kafka, Schema Registry, Flink, Tableflow, and Connectors. Pick whichever format fits the skill; YAML is convenient for nested/structured config, .env for flat shell-style variables.
Each test case should exercise the full use case end-to-end. See plan-template.md for the CRUD operations plan format. Present the plan and wait for user confirmation before creating any resources.
JSON_SR)Before running Flink operations, verify a compute pool is available:
python scripts/check_compute_pool.py --pool-id $FLINK_COMPUTE_POOL_IDIf no pool is available or capacity is full, notify the user and skip Flink tests.
Use the base skill-creator workflow for running tests (spawn subagents with skill vs without skill), but adapt for Confluent:
With-skill run:
Execute this task:
- Skill path: <path-to-skill>
- Task: <eval prompt>
- Environment: .env file at <workspace>/.env
- Save outputs to: <workspace>/iteration-<N>/eval-<ID>/with_skill/outputs/
- Outputs to save:
- Consumed data from output topic
- SQL statements executed (if applicable)
- Schema definitions
- Verification logsBaseline run: Same prompt, no skill, same environment.
For common operations, use the bundled scripts in scripts/:
check_compute_pool.py — Verify Flink compute pool availabilityproduce_data.py — Produce JSON_SR-encoded data to topicsconsume_and_verify.py — Consume data and verify against expectationsregister_schema.py — Register schemas with Schema Registrycleanup_resources.py — Clean up topics, schemas, Flink statements (local only)If script execution is denied (e.g., headless/non-interactive sessions have no approval mechanism) — fall back to the manual steps below rather than stalling silently:
check_compute_pool.py → manually check pool status via the confluent flink compute-pool CLI or the Cloud Consoleproduce_data.py → manually produce JSON_SR-encoded records via the confluent kafka topic produce CLI, or a one-off producer snippet described in proseconsume_and_verify.py → manually consume via confluent kafka topic consume and compare the count/contents against expectations by handregister_schema.py → manually register the schema via confluent schema-registry schema create or the Schema Registry UIcleanup_resources.py → manually delete topics/schemas/statements via their respective confluent CLI delete commands (Cloud), or skip cleanup if the environment is ephemeral (local only)Include relevant scripts in the created skill's scripts/ directory when packaging — and require the created skill to document this same fallback if it ships its own scripts.
Follow the base skill-creator evaluation workflow:
Confluent-specific assertions — good assertions check:
After the skill works well, optimize the triggering description. Focus on:
Bundle the skill with:
SKILL.md with external docs links (under 500 lines), including:
metadata.author: confluent for all Confluent-created skillsmetadata.version (semver string, e.g., "1.0")metadata.last_updated (YYYY-MM-DD)compatibility field if the skill has environment or package requirementsevals/evals.json — at least one test case per primary use casereferences/ — platform-specific files (if cross-platform) and any Tier 3 reference contentscripts/ — relevant bundled scripts.env.template or credentials.yaml.template for credentialsValidation gate: Before delivering, run skills-ref validate ./created-skill one final time. Do not deliver a skill that fails validation.
When the skill is being added to a Confluent skills repo (e.g., confluentinc/agent-skills), ensure:
These are required gates in the PR template and will be checked by the confluent-skill-reviewer.
.env and YAML)db79f9e
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.