AI Agent Skills by Confluent is a collection of skills for building Kafka producers, Flink applications, and real-time data-streaming pipelines. Developers use it with coding assistants when creating applications and pipelines on Confluent. The catalogue entries are its skills, plugin, and instruction.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add confluentinc/agent-skills --skill msk-migrationgit clone --depth 1 https://github.com/confluentinc/agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/confluentinc/agent-skills/msk-migration)<a href="https://agentmods.dev/skills/confluentinc/agent-skills/msk-migration"><img src="https://agentmods.dev/badge/skills/confluentinc/agent-skills/msk-migration.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00184 | $0.14202 |
| Opus 5 | $0.00092 | $0.07101 |
| Sonnet 5 | $0.00037 | $0.02840 |
| Haiku 4.5 | $0.00018 | $0.01420 |
Grade B, and why
msk-migration scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Unrestricted tool accessmediumExcessive agency
A wildcard tool grant or "run any command" leaves no least-privilege boundary at all.
Once the user picks a path, load `references/assess.md` and follow that stage's reference for the next steps. Do not ask auxiliary questions or run any commands before the user has chosen. Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
**Fetch tool — use `WebFetch`, not shell.** `WebFetch` is the only tool to use for every live source in the map below. Do NOT use `curl`, `wget`, `python3 -c`, `python3 <<EOF`, `node -e`, or any shell-based HTML strippin How it starts
The opening of the file, as written. The whole thing — 385 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AWS MSK Migration to Confluent Cloud
Scope
This skill helps with AWS MSK to Confluent Cloud migrations. Three things it does:
- Answer general migration questions about MSK and Confluent Cloud — concepts (Cluster Linking, the KCP Gateway / Zero-Cut for no-restart cutovers, Schema Linking), feature comparisons (auth, networking, cluster types), tooling (KCP, the cost estimator), and process. Grounded in the skill's references and live-fetched docs.
- Produce an Assessment of an MSK environment — Red Flags audit, Environment Summary, Topic-Level Readiness — from a KCP state file or a manual intake profile.
- Produce a Technical Plan for the migration — cluster type, sizing, networking, auth, switchover approach, schema and connector migration paths, pre-migration workstream, risks.
When the user signals intent for target-cluster provisioning, Cluster Linking setup, client cutover, or post-cutover monitoring, redirect to docs.confluent.io and the Confluent account team rather than fabricating coverage. Plan-stage decisions about networking, auth, switchover, schemas, and connectors feed those downstream stages — the user carries them out with Confluent's documented tooling and account-team support.
Do NOT pre-enumerate out-of-scope stages in the opening or anywhere else in user-facing copy. Phrases like "MVP", "next iteration", "future version", "scoped for later", and proactive lists of stages-this-skill-does-not-cover are roadmap leakage — implementation details about the skill's development that have no place in the conversation with a migration practitioner. State scope positively (what the skill helps with). Handle out-of-scope intent only when the user actually signals it; do not preemptively warn them about what's missing.
Skill Conduct
These principles govern how the skill engages with the user. They override default assistant behavior.
- Voice. Talk to the user about their migration, not about how the skill works. Instructions in this file (reference files, mode detection, stage routing, internal flags, scope boundaries, development roadmap) are implementation detail — do not describe them to the user. Keep skill mechanics invisible. Do NOT use MVP-style framing (e.g., "this is an MVP", "in this iteration", "future version", "scoped for later") or preemptively enumerate stages this skill doesn't cover. State scope positively when asked, and handle out-of-scope intent only when the user signals it.
- Default opening = stage menu; direct-route only on signal. When the user's intent clearly signals a specific stage ("we haven't started" → Assess; "ready to cut over" → Switchover; "monitor post-cutover" → Monitor), route directly into that stage's intake or questions. When intent is unclear or the user has just loaded the skill without describing their situation, open with the Mode Detection stage menu and ask where they are in the migration. Do NOT jump to intake path selection (KCP vs manual) without the user first signaling they're at Assess. Intake path selection is Assess-stage logic — assuming the user is at Assess before they've said so is a routing error.
- Stage discipline. At each stage, address only that stage's decisions and immediate red flags. Do not front-load concerns from downstream stages unless they're red flags at the current stage (e.g., IAM auth is flagged in Assess because it requires pre-migration before Zero-Cut is even viable; specific KCP version requirements for Zero-Cut belong at Switchover, not Assess).
- Command execution requires user approval — except for read-only operations on user-provided files. Mutating or environment-touching commands (KCP scans, Terraform, AWS CLI writes, Confluent CLI writes, anything that contacts an external system) require approval: present the command and ask whether the user wants to run it or have the skill run it. Do not auto-execute mutating commands without explicit approval. Read-only operations against files the user has explicitly pointed at — file reads,
jqqueries, structured parsing of state files / profiles / configs — auto-run with no approval prompt. Those are parsing, not executing, and asking permission to parse a file the user just provided breaks flow. The user is the migration practitioner and stays in control of their environment via the approval rule for mutating commands; read-only file parsing is not an environment-control concern. - One command per Bash tool call. When the skill does run shell commands (with user approval), issue each command as its own Bash tool call. Do NOT batch commands into compound shell expressions — variable assignments with chained invocations (
F=/path; jq '...' "$F"; jq '...' "$F"),cmd1 && cmd2, subshells, loops over collections, heredocs. Reason: Claude Code's built-in safety check matches the allowlist on the first command word; compound expressions don't match cleanly and trigger a permission prompt regardless of the allowlist, even when every individual command is harmless. Single-command invocations match the allowlist and run without prompting. Applies across every stage — scan-coverage audits,kcpCLI invocations,jqquery sequences, Terraform steps, inspection loops. Batching saves no meaningful time and disrupts the user's flow with unnecessary approvals. - Ask before acting on branching decisions. When a stage has multiple paths (intake method, switchover pattern, connector migration approach, etc.), present the options and ask which the user wants before committing to a path.
- Foundational inputs — ask, never fabricate. Three inputs are load-bearing for the Plan's core recommendations: topics/partitions/scale, auth posture, and networking accessibility (private/public plus VPC topology). When one is missing, ask — route the user to a re-scan or manual intake — and hold the dependent sections rather than inventing a value. Throughput is foundational-but-degradable: no metrics at all → ask; peak present but P95 missing → use the existing peak fallback with the overestimation flag (do not hard-block). Everything else (EOS/transactions, Kafka Streams, connector detail, costs, client inventory, SR version, IBP, the finer reachability route) is peripheral — assume, label the working assumption, and capture an Open Question per the never-hedge behavior. The discriminator: if the assumption would invent a load-bearing recommendation (cluster type, sizing, networking, auth, switchover), ask; if it fills a peripheral unknown, assume and label. Do not trust a tool's success exit over the data: when a KCP state file shows
kafka_admin_client_information.topics.detailsempty across all clusters whilemsk_cluster_configis populated, the deep scan did not complete (almost always private-network unreachability) — this is not a zero-topic cluster. Verify the state file actually contains topic data before proceeding. - Avoid temporal claims. No "as of Q1 2026," no release-date stamps, no "recent changes." Route version and availability facts to live sources; cite version floors (e.g., "v0.7.0+") without dates.
- Full URLs in citation link text — strict. Every doc citation in skill output must render the full URL visibly in the rendered text, not just behind the markdown href. The link text
[migrate-cc.md](https://...)fails this rule — readers who copy the Plan to plaintext, print it, paste it into Slack, or view it in a non-rendering tool see only the filename with no way to navigate to the doc. Three acceptable formats: (1) bare URL (preferred):Per Confluent docs, see https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/migrate-cc.md.Most markdown renderers auto-link bare URLs; plaintext readers still see the full path. (2) URL as link text:[https://docs.confluent.io/cloud/current/clusters/cluster-types.md](https://docs.confluent.io/cloud/current/clusters/cluster-types.md)— verbose but explicit. (3) Short descriptive label + bare URL in surrounding prose:Per the cluster types doc (https://docs.confluent.io/cloud/current/clusters/cluster-types.md). (These examples show the.mdform as written in this skill; when you emit the citation to the user, swap the extension to.htmlper the fetch/cite rule in Sources of Truth.) Forbidden: filename-only or filename-shorthand link text where the href carries the full URL —[cluster-types.md](https://...),[migrate-cc.md](https://...),[aws-pni.md](https://...),See [private-networking.md](https://...). Also forbidden: bare bracketed shorthand with no link at all (e.g.,([cluster-types.html])in table cells). Also forbidden: filename mentions in prose with no URL (e.g., "per private-networking.html"). The href being correct is not sufficient — the URL must be visible. Applies to all doc citations in Plan output, Assess output, and any other artifact the skill produces. Does not apply to KCP repo links where the repo name is the canonical identifier (e.g.,confluentinc/kcp).
What ships with it
34 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- assets/migration-profile.yaml 11 KB
- evals/evals.json 104 KB
- evals/mock-environments/msk-acme-serverless/state.json 21 KB
- evals/mock-environments/msk-aws-private-low-ecku/migration-profile.yaml 1.7 KB
- evals/mock-environments/msk-consumers-after-producers/migration-profile.yaml 4.0 KB
- evals/mock-environments/msk-drifted-throughput-label/state.json 5.5 KB
- evals/mock-environments/msk-hidden-cluster/migration-profile.yaml 3.3 KB
- evals/mock-environments/msk-hidden-connectors/migration-profile.yaml 2.2 KB
- evals/mock-environments/msk-iam-oauth-target/migration-profile.yaml 2.3 KB
- evals/mock-environments/msk-iam-private/migration-profile.yaml 1.4 KB
- evals/mock-environments/msk-iam-provisioned/migration-profile.yaml 1.6 KB
- evals/mock-environments/msk-iam-serverless/migration-profile.yaml 1.9 KB
- evals/mock-environments/msk-many-similar-clusters/migration-profile.yaml 6.0 KB
- evals/mock-environments/msk-mixed-connectors/migration-profile.yaml 1.6 KB
- evals/mock-environments/msk-mtls-azure-target/migration-profile.yaml 2.9 KB
- evals/mock-environments/msk-mtls-source/migration-profile.yaml 1.4 KB
- evals/mock-environments/msk-multi-listener-unauth/migration-profile.yaml 1.4 KB
- evals/mock-environments/msk-multi-region/state.json 7.7 KB
- evals/mock-environments/msk-peripheral-gap/migration-profile.yaml 2.5 KB
- evals/mock-environments/msk-private-direct-route/migration-profile.yaml 1.8 KB
- evals/mock-environments/msk-private-no-direct-route/migration-profile.yaml 2.2 KB
- evals/mock-environments/msk-provisioned-large/migration-profile.yaml 958 B
- evals/mock-environments/msk-provisioned-scram/migration-profile.yaml 924 B
- evals/mock-environments/msk-serverless/migration-profile.yaml 1.3 KB
- evals/mock-environments/msk-small-simple/migration-profile.yaml 1.4 KB
- evals/mock-environments/msk-strimzi-mm2-connect/migration-profile.yaml 5.6 KB
- evals/mock-environments/msk-tiered-storage-realtime/migration-profile.yaml 2.3 KB
- evals/mock-environments/msk-with-source-sr-no-outbound/migration-profile.yaml 2.4 KB
- evals/mock-environments/msk-zero-downtime-required/migration-profile.yaml 1.5 KB
- evals/mock-environments/multi-cluster-mixed/migration-profile.yaml 1.8 KB
- references/assess.md 68 KB
- references/kcp-commands.md 8.1 KB
- references/mcp-integration.md 2.0 KB
- references/plan.md 77 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 385 lines · 184 tokens per session scan B 68ce9729eabe
msk-migration is a skill published in the GitHub repository confluentinc/agent-skills (54 stars, last pushed 3d ago), licensed Apache-2.0. It adds 184 tokens to every session and 14,202 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it B with 2 findings (unrestricted tool access, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
google-cloud-solution-guided-gke-ai-migration
Guides the migration of existing AI workloads (Cloud Run, Gemini API, Gemini Enterprise Agent Platform) to self-hosted GKE inference using gcloud and kubectl. Use when the user has an existing AI inference workload (on Cloud Run, the Gemini API, Gemini Enterprise Agent Platform, or a custom VM) and wants to move it to…
agent-platform-tuning
Agent Platform Model Tuning. Use when you need to fine-tune open models or Gemini models using Agent Platform infrastructure. Don't use for model training outside Agent Platform, model deployment to endpoints (use agent-platform-deploy), or managing serving endpoints (use agent-platform-endpoint-management).
gke-alert-configuration
Configures alerting policies in Terraform for Google Kubernetes Engine (GKE) clusters, workloads, and services using PromQL and Google Cloud Managed Service for Prometheus. Use when writing, analyzing, validating, or deploying Terraform alerting policies to monitor GKE service latency, traffic, error rates using…
google-cloud-solution-n-tier-serverless-web-app
Assists in designing and implementing secure n-tier serverless web applications and microservices on Google Cloud. Use when users need architecture designs, security checklists, Terraform code, or deployment guidance for multi-tier serverless apps, regional data residency / European sovereignty compliance, zero-trust…
cloud-run-basics
Manages Cloud Run services, jobs, and worker pools. Use when you need to deploy applications responding to HTTP requests (services), run event-triggered or scheduled tasks (jobs), or handle always-on pull-based background processing (worker pools).
gke-observability
Configures GKE observability, including Cloud Logging, Cloud Monitoring, and managed Prometheus. Use when configuring GKE monitoring, setting up GKE logging, or configuring Prometheus metrics collection. Don't use to configure local application logging frameworks or external APMs outside GKE.