[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-migrate-to-msk":3,"mdc-ge331p-key":32,"related-repo-aws-migrate-to-msk":1375,"related-org-aws-migrate-to-msk":1481},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"migrate-to-msk","migrate Kafka workloads to Amazon MSK","Helps migrate self-managed Apache Kafka workloads to Amazon MSK Express. Inventories the source cluster (from IaC files, Kafka CLI output, or manual input), assesses MSK Express compatibility across topology, Kafka version, configs, auth, and quotas, produces a target Express specification (instance type, broker count, monthly cost) by filling the AWS-published MSK Sizing\u002FPricing workbook, and guides migration execution using MSK Replicator. Applicable when the user mentions migrating Kafka, MSK, MSK Express, Kafka migration, analyzing Kafka infrastructure, moving to MSK, moving streaming platform to MSK, streaming migration, moving streaming workloads to AWS, MSK workload compatibility, choosing an MSK cluster type, or MSK Replicator. Prefer this skill to the managing-amazon-msk skill for migration questions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"aws","AWS (Amazon)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws.png",[12,16,19],{"name":13,"slug":14,"type":15},"Migration","migration","tag",{"name":17,"slug":18,"type":15},"Infrastructure","infrastructure",{"name":20,"slug":8,"type":15},"AWS",1822,"https:\u002F\u002Fgithub.com\u002Faws\u002Fagent-toolkit-for-aws","2026-08-01T05:42:03.413549",null,157,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":29},[],"Official, AWS-supported MCP servers, skills, and plugins to help AI agents build on AWS","https:\u002F\u002Fgithub.com\u002Faws\u002Fagent-toolkit-for-aws\u002Ftree\u002FHEAD\u002Fskills\u002Fspecialized-skills\u002Fanalytics-skills\u002Fmigrate-to-msk","---\nname: migrate-to-msk\ndescription: >-\n  Helps migrate self-managed Apache Kafka workloads to Amazon MSK Express. Inventories\n  the source cluster (from IaC files, Kafka CLI output, or manual input), assesses\n  MSK Express compatibility across topology, Kafka version, configs, auth, and quotas,\n  produces a target Express specification (instance type, broker count, monthly cost)\n  by filling the AWS-published MSK Sizing\u002FPricing workbook, and guides migration execution\n  using MSK Replicator. Applicable when the user mentions migrating Kafka, MSK, MSK\n  Express, Kafka migration, analyzing Kafka infrastructure, moving to MSK, moving\n  streaming platform to MSK, streaming migration, moving streaming workloads to AWS,\n  MSK workload compatibility, choosing an MSK cluster type, or MSK Replicator.\n  Prefer this skill to the managing-amazon-msk skill for migration questions.\nversion: 2\n---\n\n# Migrating to MSK Express\n\n## Overview\n\nThis skill helps customers migrate self-managed Apache Kafka workloads to Amazon MSK\nExpress. It provides three phases — **Discovery**, **Assessment**, and an optional\n**Simulation** — that can be run end-to-end or individually depending on the customer's needs.\n\n## Scope\n\nThis skill covers migrations from **self-managed Apache Kafka** (on-premises, EC2,\nDocker, Kubernetes, or other non-MSK deployments) to MSK Express. Migrations from\n**MSK Standard (Provisioned) to MSK Express** are out of scope.\n\n## Prerequisites\n\nThe AWS MCP server is recommended for documentation lookups and informational\nquestions, but is not required. The assessment scripts are pure file processors\nwith no AWS API calls.\n\n## Intent Routing\n\nRoute the customer's request based on their intent:\n\n### 1. Open\u002Fexploratory question (\"How do I migrate to MSK?\")\n\nExplain what this skill offers:\n\n> This skill helps you migrate to MSK Express in three phases:\n>\n> **Phase 1 — Discovery:** Inventory your source Kafka cluster — brokers, topics,\n> partition counts, configs, authentication, and workload metrics.\n> I can discover this from IaC files (Terraform, CDK, Docker Compose, Kubernetes\n> manifests), provide commands for you to run on your cluster, or you can provide the\n> information manually. Output: `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json`.\n>\n> **Phase 2 — Assessment:** Validate your cluster against MSK Express across 5\n> compatibility pillars (topology, Kafka version, configs, auth, quotas) and produce\n> a target Express specification using the AWS-published MSK Sizing\u002FPricing workbook.\n> I'll flag what Express will refuse vs what Express will silently convert. Outputs:\n> `compatibility.\u003Ccluster_name>.json`, the filled `MSK_Sizing_Pricing.\u003Ccluster_name>.xlsx`,\n> and `msk-sizing-inputs.\u003Ccluster_name>.json`.\n>\n> **Phase 3 — Simulation:** Spin up an MSK Express cluster with load-testing\n> infrastructure to see how Express performs on your own workload, then run a vended\n> test (End-to-End Latency or Broker Restart Under Load) and review the results on a\n> CloudWatch dashboard.\n>\n> **Data replication:** For migrating data to your Express cluster, you can use\n> MSK Replicator. I can provide guidance on setup and configuration.\n>\n> Where would you like to start? I can begin with discovery if you point me to your\n> infrastructure code or describe your cluster, or jump to assessment if you already have a\n> `cluster-config.json` file, or go straight to simulation if you already know your target\n> Express configuration.\n\n**Guardrails for this overview response:**\n\n- This response is an overview and a routing question only. Do NOT begin, simulate, or pre-empt any phase.\n- Do NOT produce or estimate assessment output here — no verdicts, pillar findings, compatibility conclusions, broker counts, instance recommendations, or cost figures. Those values exist only after you run the Phase 2 scripts against a real `cluster-config.json`.\n- Do NOT open, read, or summarize the internals of `compatibility.py`, `sizing.py`, `simulation_load_test_config.py`, or the reference files to explain how a phase works. Describe the phases at the level shown above; do not walk the customer through the implementation.\n- When the customer chooses a phase, run that phase's scripts or flow to produce real results. Always operate the skill to answer — never answer from having read its source. For the exact commands, see \"Running the assessment\" in [references\u002Fassessment-compatibility.md](references\u002Fassessment-compatibility.md) for Phase 2, and [references\u002Fsimulation.md](references\u002Fsimulation.md) for Phase 3.\n\n### 2. Discovery intent (DEFAULT when IaC files are provided)\n\nIf the customer provides a directory path, IaC files, or says \"here's our infra\" —\nthis is discovery intent. Run ONLY Phase 1 (Discovery). Do NOT run assessment,\ndo NOT suggest migration steps, do NOT mention blockers or compatibility.\nProduce the `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json` file and stop.\n\n### 3. Assessment intent\n\nCustomer explicitly asks to assess or has a `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json` file\nalready produced. Run Phase 2 (Assessment) only.\n\n### 4. Simulation intent\n\nCustomer wants to test MSK Express with their workload. They can provide cluster\nsizing directly (instance type, broker count, Kafka version) or reference an earlier\nassessment. Proceed directly to [Phase 3 — Simulation](#phase-3--simulation-optional).\nAn assessment is helpful but not required — the simulation asks for sizing inputs\ndirectly.\n\n### 5. Informational questions\n\nCustomer asks about Express capabilities, constraints, configuration differences,\nauthentication support, pricing, or compaction behavior without providing\ncluster-specific data. Use AWS documentation tools (`aws___search_documentation`,\n`aws___read_documentation`) if available to look up the answer from MSK Express\ndocumentation. If MCP tools are not available, reference the\n[MSK Express documentation](https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fmsk-broker-types-express.html)\nand answer based on knowledge of AWS MSK.\n\n### 6. Migration strategy questions\n\nCustomer asks about MSK Replicator compatibility, version upgrade paths, MirrorMaker 2,\nor migration strategies. MSK Replicator is the native AWS-supported solution for data\nreplication and works for both MSK-to-MSK and non-MSK-to-MSK migrations. Use AWS\ndocumentation tools (`aws___search_documentation`, `aws___read_documentation`) if\navailable to retrieve current requirements and supported configurations. If MCP tools\nare not available, reference the\n[MSK Replicator documentation](https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fmsk-replicator.html)\nand answer based on knowledge of AWS MSK.\n\n---\n\n## Phase 1 — Discovery\n\n**Purpose:** Inventory the source cluster to build a migration profile.\n\n**Input:** One of:\n\n- A directory path containing IaC files (CDK, CloudFormation, Docker Compose, Kubernetes manifests, Terraform)\n- Output from Kafka CLI commands the customer runs on their cluster\n- Manual information provided by the customer in conversation\n\n**Output:** `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json` — saved to the working directory.\n\n### MANDATORY first step for discovery\n\nBefore doing ANYTHING else in discovery, you MUST read the reference file:\n`references\u002Fdiscovery.md` (located at the skill path shown above).\n\nUse `file_read` to read the full content of `references\u002Fdiscovery.md`. This file\ncontains the REQUIRED response template and JSON schema. You MUST follow the\ntemplate exactly — your response format, forbidden content, and JSON structure\nare all defined there. Do NOT respond until you have read this file.\n\n### Discovery methods\n\n1. **IaC analysis** — Read infrastructure files and extract cluster metadata.\n\n2. **Kafka CLI commands** — Display standard Kafka CLI commands for the customer to run on\n   their cluster (kafka-topics.sh, kafka-configs.sh, kafka-broker-api-versions.sh).\n   Do NOT generate or offer Python scripts.\n\n3. **Runtime metrics intake** — Ingest metrics provided by the customer.\n\n4. **Manual conversation** — Ask the customer for cluster details.\n\n### Discovery rules\n\n- You MUST read `references\u002Fdiscovery.md` before responding.\n- Follow the response template from that file EXACTLY.\n- ALWAYS save `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json` in the working directory.\n- Do NOT proceed to Phase 2 without explicit customer confirmation.\n\n---\n\n## Phase 2 — Assessment\n\n**Purpose:** Assess the cluster against MSK Express requirements and produce a target\nExpress specification (instance type, broker count, monthly cost projection).\n\n**Input:** `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json` from Phase 1.\n\n**Outputs:**\n\n- `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcompatibility.\u003Ccluster_name>.json` — five-pillar verdict.\n- `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002FMSK_Sizing_Pricing.\u003Ccluster_name>.xlsx` — the AWS-published MSK Sizing\u002FPricing workbook (downloaded by the agent) with the six workload inputs filled into the `MSK Provisioned` sheet. Open it to read the broker count and cost recommendations.\n- `migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fmsk-sizing-inputs.\u003Ccluster_name>.json` — a record of the six input values and the cell each maps to.\n\nAssessment is implemented as two file processors (no live AWS API calls):\n\n- `scripts\u002Fcompatibility.py` — five-pillar compatibility assessment.\n- `scripts\u002Fsizing.py` — computes the six workbook inputs from the discovery contract and fills them into the AWS-published workbook the agent downloads.\n\nBoth run via `uv run` with PEP 723 inline dependencies. For the exact\ninvocation commands, see \"Running the assessment\" in\n[references\u002Fassessment-compatibility.md](references\u002Fassessment-compatibility.md).\n\n### Compatibility pillars\n\n`compatibility.py` validates the source against MSK Express across five pillars:\n\n1. **Topology** — AZ count, broker count, KRaft vs ZooKeeper, per-cluster broker quota.\n2. **Kafka version** — source version against the Express supported set (3.6, 3.8, 3.9).\n3. **Configs** — broker- and topic-level configs against Express's editable, read-only,\n   range-restricted, and enforced-value sets (sourced from the Express broker configuration\n   documentation on `docs.aws.amazon.com\u002Fmsk`).\n4. **Auth** — checks the source's authentication mechanism against those MSK Express supports and surfaces any incompatibilities.\n5. **Quotas** — peak workload against absolute Express ceilings (per-broker ingress\u002F\n   egress, partition count, IAM connection cap, per-partition throughput).\n\nSee [references\u002Fassessment-compatibility.md](references\u002Fassessment-compatibility.md)\nfor the full pseudocode, evidence codes, and verdict mapping.\n\n### Verdict vocabulary\n\nEach pillar emits one of three verdicts; the overall is the worst across pillars.\n\n| Verdict | Meaning |\n|---|---|\n| `INFO` | Your source cluster already lines up with MSK Express here. Surfaced for informational purposes. No action needed. |\n| `ADVISORY` | Your source cluster differs from MSK Express here, but Express handles this for you at the target by adjusting or replacing the setting. Migration can proceed; review it so the resulting behavior change is expected. |\n| `ACTION_REQUIRED` | Identifies a configuration or condition that MSK Express is not expected to accept in its current form. Remediation on the source prior to migration is recommended. |\n\n### Sizing\n\n`sizing.py` computes the six workbook inputs from the source workload (peak\nin\u002Fout, total partitions, retention). The agent downloads the AWS-published\nworkbook by reading the Express best-practices page and following its workbook\nhyperlink, then runs `sizing.py --workbook \u003Cdownloaded.xlsx>`, which fills the\n`MSK Provisioned` sheet and writes the filled\n`MSK_Sizing_Pricing.\u003Ccluster_name>.xlsx` (plus a\n`msk-sizing-inputs.\u003Ccluster_name>.json` record). Open the filled workbook to\nread the per-instance broker count and monthly cost; its formulas recalculate\non open. The workbook is downloaded at assessment time, not packaged with the\nskill, and the script itself performs no network access (it fills a workbook\nthe agent already downloaded, using the Python standard library). See\n[references\u002Fassessment-sizing.md](references\u002Fassessment-sizing.md) for the cell\nmapping, the download flow, and caveats.\n\n### Assessment rules\n\n- Run `compatibility.py` and `sizing.py` independently; neither blocks the other.\n- Surface any `ACTION_REQUIRED` evidence to the user for awareness, but do not gate further phases on it. Express may still accept the workload with mitigations.\n- **Do NOT pivot back into discovery.** Assessment operates on the existing\n  `cluster-config.json` as-is. Partial data is fine — the scripts emit\n  ADVISORY evidence (`METRICS_MISSING`, `AZ_COUNT_UNKNOWN`, etc.) for\n  missing fields; surface those findings and stop. Do not propose Kafka CLI\n  commands, IaC walks, scripts, or questionnaires to fill the gaps. Full\n  forbidden-behavior list in\n  [references\u002Fassessment-compatibility.md](references\u002Fassessment-compatibility.md).\n- **Your response MUST follow the assessment response template** in\n  [references\u002Fassessment-compatibility.md](references\u002Fassessment-compatibility.md)\n  (section \"Response Template\"). One template covers both artifacts. Do\n  not freestyle the post-script summary — the template defines required\n  sections, mandatory vocabulary (use the verdict strings verbatim), and\n  forbidden content (no scores, no narrative editorializing, no in-prose\n  cost \u002F instance recommendations — the user reads those from the filled workbook).\n\n---\n\n## Phase 3 — Simulation (optional)\n\nDeploy a temporary, isolated MSK Express cluster and client fleet in the\ncustomer's account so they can see how Express performs on their own workload, then\nrun one of two vended tests (End-to-End Latency, Broker Restart Under Load) and hand\nover a CloudWatch dashboard. Follow the 12-step conversational flow and all deploy,\nsizing, and guardrail details in [references\u002Fsimulation.md](references\u002Fsimulation.md);\nthe deterministic artifacts it drives are\n[scripts\u002Fsimulation_load_test_config.py](scripts\u002Fsimulation_load_test_config.py) and the\nstatic [assets\u002Fsimulation-stack.yaml](assets\u002Fsimulation-stack.yaml).\n\n---\n\n## Execution model\n\nScripts run on the customer's local machine via `uv run`. They declare their own\ndependencies (PEP 723) and are pure file processors — no AWS API calls, no\nnetwork access, and no third-party dependencies (standard library only).\n\n## Security Considerations\n\nApply these controls at every phase. For additional detail, see\n[MSK Security best practices](https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fsecurity.html)\nand [MSK IAM access control](https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fiam-access-control.html).\n\n1. **Encryption in transit (mandatory).** Enforce TLS for client-broker traffic\n   on the MSK Express target (`EncryptionInTransit.ClientBroker = TLS`).\n\n2. **Encryption at rest (mandatory).** Provision the target cluster with a\n   customer-managed KMS key (or AWS-managed if your compliance posture allows).\n\n3. **Authentication — prefer IAM over long-lived credentials.** Configure the\n   MSK Express target with IAM authentication as the sole client auth method.\n   This gives ephemeral, role-based credentials with full CloudTrail coverage.\n\n4. **Credential storage — use AWS Secrets Manager.** Store SASL\u002FSCRAM and TLS\n   credentials for source cluster access in Secrets Manager. Never pass passwords\n   as CLI arguments.\n\n5. **Network isolation.** Deploy MSK clusters in private subnets. Use security\n   groups scoped to specific CIDR ranges or security group references. Do NOT use\n   0.0.0.0\u002F0 ingress rules.\n\n6. **CloudTrail logging and CloudWatch alarms.** Ensure CloudTrail is enabled in\n   the target account and covers `kafka.amazonaws.com` API calls. Configure alarms:\n   - `ClientAuthenticationFailure` — surge indicates credential problems or attack\n   - `ConnectionCloseCount` — abnormal spike may indicate connection-flooding\n   - CloudTrail metric filters for denied `kafka-cluster:*` actions\n   - Connection-rate alarms approaching the 100 conn\u002Fsec\u002Fbroker IAM limit\n\n7. **Sensitive data handling.** Discovery and assessment outputs contain broker\n   addresses, auth hints, and broker config values. Treat these as sensitive — do\n   not paste into public channels or ticketing systems without redaction.\n\n## Troubleshooting\n\n**Single-broker \u002F single-AZ source.** Topology pillar emits `BROKER_COUNT_LT_3` \u002F\n`AZ_COUNT_NOT_3` ADVISORY — Express auto-fixes at the target by deploying across 3\nAZs with ≥3 brokers regardless of source.\n\n**Out-of-range topic configs.** `max.compaction.lag.ms \u003C 1 day` is the only\nExpress-rejected topic-config bound encoded in compatibility.py. Adjust on the\nsource before migration.\n\n**Workbook recommendations look blank or stale.** The recommendation and cost\ncells are workbook formulas; they populate once the filled workbook is opened\nin Excel \u002F LibreOffice \u002F Sheets and its formulas recalculate. `sizing.py` sets\n`fullCalcOnLoad` so this happens automatically on open — if your spreadsheet\napp has automatic recalculation disabled, trigger a manual recalculation.\n",{"data":33,"body":35},{"name":4,"description":6,"version":34},2,{"type":36,"children":37},"root",[38,47,54,82,88,107,113,118,124,129,136,141,235,243,311,317,329,335,347,353,366,372,403,409,435,439,445,455,465,483,500,506,519,539,545,589,595,632,635,641,650,665,673,717,722,747,765,771,781,842,853,859,864,943,949,995,1001,1088,1091,1097,1121,1124,1130,1142,1148,1170,1301,1307,1333,1350],{"type":39,"tag":40,"props":41,"children":43},"element","h1",{"id":42},"migrating-to-msk-express",[44],{"type":45,"value":46},"text","Migrating to MSK Express",{"type":39,"tag":48,"props":49,"children":51},"h2",{"id":50},"overview",[52],{"type":45,"value":53},"Overview",{"type":39,"tag":55,"props":56,"children":57},"p",{},[58,60,66,68,73,75,80],{"type":45,"value":59},"This skill helps customers migrate self-managed Apache Kafka workloads to Amazon MSK\nExpress. It provides three phases — ",{"type":39,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":45,"value":65},"Discovery",{"type":45,"value":67},", ",{"type":39,"tag":61,"props":69,"children":70},{},[71],{"type":45,"value":72},"Assessment",{"type":45,"value":74},", and an optional\n",{"type":39,"tag":61,"props":76,"children":77},{},[78],{"type":45,"value":79},"Simulation",{"type":45,"value":81}," — that can be run end-to-end or individually depending on the customer's needs.",{"type":39,"tag":48,"props":83,"children":85},{"id":84},"scope",[86],{"type":45,"value":87},"Scope",{"type":39,"tag":55,"props":89,"children":90},{},[91,93,98,100,105],{"type":45,"value":92},"This skill covers migrations from ",{"type":39,"tag":61,"props":94,"children":95},{},[96],{"type":45,"value":97},"self-managed Apache Kafka",{"type":45,"value":99}," (on-premises, EC2,\nDocker, Kubernetes, or other non-MSK deployments) to MSK Express. Migrations from\n",{"type":39,"tag":61,"props":101,"children":102},{},[103],{"type":45,"value":104},"MSK Standard (Provisioned) to MSK Express",{"type":45,"value":106}," are out of scope.",{"type":39,"tag":48,"props":108,"children":110},{"id":109},"prerequisites",[111],{"type":45,"value":112},"Prerequisites",{"type":39,"tag":55,"props":114,"children":115},{},[116],{"type":45,"value":117},"The AWS MCP server is recommended for documentation lookups and informational\nquestions, but is not required. The assessment scripts are pure file processors\nwith no AWS API calls.",{"type":39,"tag":48,"props":119,"children":121},{"id":120},"intent-routing",[122],{"type":45,"value":123},"Intent Routing",{"type":39,"tag":55,"props":125,"children":126},{},[127],{"type":45,"value":128},"Route the customer's request based on their intent:",{"type":39,"tag":130,"props":131,"children":133},"h3",{"id":132},"_1-openexploratory-question-how-do-i-migrate-to-msk",[134],{"type":45,"value":135},"1. Open\u002Fexploratory question (\"How do I migrate to MSK?\")",{"type":39,"tag":55,"props":137,"children":138},{},[139],{"type":45,"value":140},"Explain what this skill offers:",{"type":39,"tag":142,"props":143,"children":144},"blockquote",{},[145,150,169,202,212,222],{"type":39,"tag":55,"props":146,"children":147},{},[148],{"type":45,"value":149},"This skill helps you migrate to MSK Express in three phases:",{"type":39,"tag":55,"props":151,"children":152},{},[153,158,160,167],{"type":39,"tag":61,"props":154,"children":155},{},[156],{"type":45,"value":157},"Phase 1 — Discovery:",{"type":45,"value":159}," Inventory your source Kafka cluster — brokers, topics,\npartition counts, configs, authentication, and workload metrics.\nI can discover this from IaC files (Terraform, CDK, Docker Compose, Kubernetes\nmanifests), provide commands for you to run on your cluster, or you can provide the\ninformation manually. Output: ",{"type":39,"tag":161,"props":162,"children":164},"code",{"className":163},[],[165],{"type":45,"value":166},"migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcluster-config.json",{"type":45,"value":168},".",{"type":39,"tag":55,"props":170,"children":171},{},[172,177,179,185,187,193,195,201],{"type":39,"tag":61,"props":173,"children":174},{},[175],{"type":45,"value":176},"Phase 2 — Assessment:",{"type":45,"value":178}," Validate your cluster against MSK Express across 5\ncompatibility pillars (topology, Kafka version, configs, auth, quotas) and produce\na target Express specification using the AWS-published MSK Sizing\u002FPricing workbook.\nI'll flag what Express will refuse vs what Express will silently convert. Outputs:\n",{"type":39,"tag":161,"props":180,"children":182},{"className":181},[],[183],{"type":45,"value":184},"compatibility.\u003Ccluster_name>.json",{"type":45,"value":186},", the filled ",{"type":39,"tag":161,"props":188,"children":190},{"className":189},[],[191],{"type":45,"value":192},"MSK_Sizing_Pricing.\u003Ccluster_name>.xlsx",{"type":45,"value":194},",\nand ",{"type":39,"tag":161,"props":196,"children":198},{"className":197},[],[199],{"type":45,"value":200},"msk-sizing-inputs.\u003Ccluster_name>.json",{"type":45,"value":168},{"type":39,"tag":55,"props":203,"children":204},{},[205,210],{"type":39,"tag":61,"props":206,"children":207},{},[208],{"type":45,"value":209},"Phase 3 — Simulation:",{"type":45,"value":211}," Spin up an MSK Express cluster with load-testing\ninfrastructure to see how Express performs on your own workload, then run a vended\ntest (End-to-End Latency or Broker Restart Under Load) and review the results on a\nCloudWatch dashboard.",{"type":39,"tag":55,"props":213,"children":214},{},[215,220],{"type":39,"tag":61,"props":216,"children":217},{},[218],{"type":45,"value":219},"Data replication:",{"type":45,"value":221}," For migrating data to your Express cluster, you can use\nMSK Replicator. I can provide guidance on setup and configuration.",{"type":39,"tag":55,"props":223,"children":224},{},[225,227,233],{"type":45,"value":226},"Where would you like to start? I can begin with discovery if you point me to your\ninfrastructure code or describe your cluster, or jump to assessment if you already have a\n",{"type":39,"tag":161,"props":228,"children":230},{"className":229},[],[231],{"type":45,"value":232},"cluster-config.json",{"type":45,"value":234}," file, or go straight to simulation if you already know your target\nExpress configuration.",{"type":39,"tag":55,"props":236,"children":237},{},[238],{"type":39,"tag":61,"props":239,"children":240},{},[241],{"type":45,"value":242},"Guardrails for this overview response:",{"type":39,"tag":244,"props":245,"children":246},"ul",{},[247,253,264,291],{"type":39,"tag":248,"props":249,"children":250},"li",{},[251],{"type":45,"value":252},"This response is an overview and a routing question only. Do NOT begin, simulate, or pre-empt any phase.",{"type":39,"tag":248,"props":254,"children":255},{},[256,258,263],{"type":45,"value":257},"Do NOT produce or estimate assessment output here — no verdicts, pillar findings, compatibility conclusions, broker counts, instance recommendations, or cost figures. Those values exist only after you run the Phase 2 scripts against a real ",{"type":39,"tag":161,"props":259,"children":261},{"className":260},[],[262],{"type":45,"value":232},{"type":45,"value":168},{"type":39,"tag":248,"props":265,"children":266},{},[267,269,275,276,282,283,289],{"type":45,"value":268},"Do NOT open, read, or summarize the internals of ",{"type":39,"tag":161,"props":270,"children":272},{"className":271},[],[273],{"type":45,"value":274},"compatibility.py",{"type":45,"value":67},{"type":39,"tag":161,"props":277,"children":279},{"className":278},[],[280],{"type":45,"value":281},"sizing.py",{"type":45,"value":67},{"type":39,"tag":161,"props":284,"children":286},{"className":285},[],[287],{"type":45,"value":288},"simulation_load_test_config.py",{"type":45,"value":290},", or the reference files to explain how a phase works. Describe the phases at the level shown above; do not walk the customer through the implementation.",{"type":39,"tag":248,"props":292,"children":293},{},[294,296,302,304,309],{"type":45,"value":295},"When the customer chooses a phase, run that phase's scripts or flow to produce real results. Always operate the skill to answer — never answer from having read its source. For the exact commands, see \"Running the assessment\" in ",{"type":39,"tag":297,"props":298,"children":300},"a",{"href":299},"references\u002Fassessment-compatibility.md",[301],{"type":45,"value":299},{"type":45,"value":303}," for Phase 2, and ",{"type":39,"tag":297,"props":305,"children":307},{"href":306},"references\u002Fsimulation.md",[308],{"type":45,"value":306},{"type":45,"value":310}," for Phase 3.",{"type":39,"tag":130,"props":312,"children":314},{"id":313},"_2-discovery-intent-default-when-iac-files-are-provided",[315],{"type":45,"value":316},"2. Discovery intent (DEFAULT when IaC files are provided)",{"type":39,"tag":55,"props":318,"children":319},{},[320,322,327],{"type":45,"value":321},"If the customer provides a directory path, IaC files, or says \"here's our infra\" —\nthis is discovery intent. Run ONLY Phase 1 (Discovery). Do NOT run assessment,\ndo NOT suggest migration steps, do NOT mention blockers or compatibility.\nProduce the ",{"type":39,"tag":161,"props":323,"children":325},{"className":324},[],[326],{"type":45,"value":166},{"type":45,"value":328}," file and stop.",{"type":39,"tag":130,"props":330,"children":332},{"id":331},"_3-assessment-intent",[333],{"type":45,"value":334},"3. Assessment intent",{"type":39,"tag":55,"props":336,"children":337},{},[338,340,345],{"type":45,"value":339},"Customer explicitly asks to assess or has a ",{"type":39,"tag":161,"props":341,"children":343},{"className":342},[],[344],{"type":45,"value":166},{"type":45,"value":346}," file\nalready produced. Run Phase 2 (Assessment) only.",{"type":39,"tag":130,"props":348,"children":350},{"id":349},"_4-simulation-intent",[351],{"type":45,"value":352},"4. Simulation intent",{"type":39,"tag":55,"props":354,"children":355},{},[356,358,364],{"type":45,"value":357},"Customer wants to test MSK Express with their workload. They can provide cluster\nsizing directly (instance type, broker count, Kafka version) or reference an earlier\nassessment. Proceed directly to ",{"type":39,"tag":297,"props":359,"children":361},{"href":360},"#phase-3--simulation-optional",[362],{"type":45,"value":363},"Phase 3 — Simulation",{"type":45,"value":365},".\nAn assessment is helpful but not required — the simulation asks for sizing inputs\ndirectly.",{"type":39,"tag":130,"props":367,"children":369},{"id":368},"_5-informational-questions",[370],{"type":45,"value":371},"5. Informational questions",{"type":39,"tag":55,"props":373,"children":374},{},[375,377,383,385,391,393,401],{"type":45,"value":376},"Customer asks about Express capabilities, constraints, configuration differences,\nauthentication support, pricing, or compaction behavior without providing\ncluster-specific data. Use AWS documentation tools (",{"type":39,"tag":161,"props":378,"children":380},{"className":379},[],[381],{"type":45,"value":382},"aws___search_documentation",{"type":45,"value":384},",\n",{"type":39,"tag":161,"props":386,"children":388},{"className":387},[],[389],{"type":45,"value":390},"aws___read_documentation",{"type":45,"value":392},") if available to look up the answer from MSK Express\ndocumentation. If MCP tools are not available, reference the\n",{"type":39,"tag":297,"props":394,"children":398},{"href":395,"rel":396},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fmsk-broker-types-express.html",[397],"nofollow",[399],{"type":45,"value":400},"MSK Express documentation",{"type":45,"value":402},"\nand answer based on knowledge of AWS MSK.",{"type":39,"tag":130,"props":404,"children":406},{"id":405},"_6-migration-strategy-questions",[407],{"type":45,"value":408},"6. Migration strategy questions",{"type":39,"tag":55,"props":410,"children":411},{},[412,414,419,420,425,427,434],{"type":45,"value":413},"Customer asks about MSK Replicator compatibility, version upgrade paths, MirrorMaker 2,\nor migration strategies. MSK Replicator is the native AWS-supported solution for data\nreplication and works for both MSK-to-MSK and non-MSK-to-MSK migrations. Use AWS\ndocumentation tools (",{"type":39,"tag":161,"props":415,"children":417},{"className":416},[],[418],{"type":45,"value":382},{"type":45,"value":67},{"type":39,"tag":161,"props":421,"children":423},{"className":422},[],[424],{"type":45,"value":390},{"type":45,"value":426},") if\navailable to retrieve current requirements and supported configurations. If MCP tools\nare not available, reference the\n",{"type":39,"tag":297,"props":428,"children":431},{"href":429,"rel":430},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fmsk-replicator.html",[397],[432],{"type":45,"value":433},"MSK Replicator documentation",{"type":45,"value":402},{"type":39,"tag":436,"props":437,"children":438},"hr",{},[],{"type":39,"tag":48,"props":440,"children":442},{"id":441},"phase-1-discovery",[443],{"type":45,"value":444},"Phase 1 — Discovery",{"type":39,"tag":55,"props":446,"children":447},{},[448,453],{"type":39,"tag":61,"props":449,"children":450},{},[451],{"type":45,"value":452},"Purpose:",{"type":45,"value":454}," Inventory the source cluster to build a migration profile.",{"type":39,"tag":55,"props":456,"children":457},{},[458,463],{"type":39,"tag":61,"props":459,"children":460},{},[461],{"type":45,"value":462},"Input:",{"type":45,"value":464}," One of:",{"type":39,"tag":244,"props":466,"children":467},{},[468,473,478],{"type":39,"tag":248,"props":469,"children":470},{},[471],{"type":45,"value":472},"A directory path containing IaC files (CDK, CloudFormation, Docker Compose, Kubernetes manifests, Terraform)",{"type":39,"tag":248,"props":474,"children":475},{},[476],{"type":45,"value":477},"Output from Kafka CLI commands the customer runs on their cluster",{"type":39,"tag":248,"props":479,"children":480},{},[481],{"type":45,"value":482},"Manual information provided by the customer in conversation",{"type":39,"tag":55,"props":484,"children":485},{},[486,491,493,498],{"type":39,"tag":61,"props":487,"children":488},{},[489],{"type":45,"value":490},"Output:",{"type":45,"value":492}," ",{"type":39,"tag":161,"props":494,"children":496},{"className":495},[],[497],{"type":45,"value":166},{"type":45,"value":499}," — saved to the working directory.",{"type":39,"tag":130,"props":501,"children":503},{"id":502},"mandatory-first-step-for-discovery",[504],{"type":45,"value":505},"MANDATORY first step for discovery",{"type":39,"tag":55,"props":507,"children":508},{},[509,511,517],{"type":45,"value":510},"Before doing ANYTHING else in discovery, you MUST read the reference file:\n",{"type":39,"tag":161,"props":512,"children":514},{"className":513},[],[515],{"type":45,"value":516},"references\u002Fdiscovery.md",{"type":45,"value":518}," (located at the skill path shown above).",{"type":39,"tag":55,"props":520,"children":521},{},[522,524,530,532,537],{"type":45,"value":523},"Use ",{"type":39,"tag":161,"props":525,"children":527},{"className":526},[],[528],{"type":45,"value":529},"file_read",{"type":45,"value":531}," to read the full content of ",{"type":39,"tag":161,"props":533,"children":535},{"className":534},[],[536],{"type":45,"value":516},{"type":45,"value":538},". This file\ncontains the REQUIRED response template and JSON schema. You MUST follow the\ntemplate exactly — your response format, forbidden content, and JSON structure\nare all defined there. Do NOT respond until you have read this file.",{"type":39,"tag":130,"props":540,"children":542},{"id":541},"discovery-methods",[543],{"type":45,"value":544},"Discovery methods",{"type":39,"tag":546,"props":547,"children":548},"ol",{},[549,559,569,579],{"type":39,"tag":248,"props":550,"children":551},{},[552,557],{"type":39,"tag":61,"props":553,"children":554},{},[555],{"type":45,"value":556},"IaC analysis",{"type":45,"value":558}," — Read infrastructure files and extract cluster metadata.",{"type":39,"tag":248,"props":560,"children":561},{},[562,567],{"type":39,"tag":61,"props":563,"children":564},{},[565],{"type":45,"value":566},"Kafka CLI commands",{"type":45,"value":568}," — Display standard Kafka CLI commands for the customer to run on\ntheir cluster (kafka-topics.sh, kafka-configs.sh, kafka-broker-api-versions.sh).\nDo NOT generate or offer Python scripts.",{"type":39,"tag":248,"props":570,"children":571},{},[572,577],{"type":39,"tag":61,"props":573,"children":574},{},[575],{"type":45,"value":576},"Runtime metrics intake",{"type":45,"value":578}," — Ingest metrics provided by the customer.",{"type":39,"tag":248,"props":580,"children":581},{},[582,587],{"type":39,"tag":61,"props":583,"children":584},{},[585],{"type":45,"value":586},"Manual conversation",{"type":45,"value":588}," — Ask the customer for cluster details.",{"type":39,"tag":130,"props":590,"children":592},{"id":591},"discovery-rules",[593],{"type":45,"value":594},"Discovery rules",{"type":39,"tag":244,"props":596,"children":597},{},[598,610,615,627],{"type":39,"tag":248,"props":599,"children":600},{},[601,603,608],{"type":45,"value":602},"You MUST read ",{"type":39,"tag":161,"props":604,"children":606},{"className":605},[],[607],{"type":45,"value":516},{"type":45,"value":609}," before responding.",{"type":39,"tag":248,"props":611,"children":612},{},[613],{"type":45,"value":614},"Follow the response template from that file EXACTLY.",{"type":39,"tag":248,"props":616,"children":617},{},[618,620,625],{"type":45,"value":619},"ALWAYS save ",{"type":39,"tag":161,"props":621,"children":623},{"className":622},[],[624],{"type":45,"value":166},{"type":45,"value":626}," in the working directory.",{"type":39,"tag":248,"props":628,"children":629},{},[630],{"type":45,"value":631},"Do NOT proceed to Phase 2 without explicit customer confirmation.",{"type":39,"tag":436,"props":633,"children":634},{},[],{"type":39,"tag":48,"props":636,"children":638},{"id":637},"phase-2-assessment",[639],{"type":45,"value":640},"Phase 2 — Assessment",{"type":39,"tag":55,"props":642,"children":643},{},[644,648],{"type":39,"tag":61,"props":645,"children":646},{},[647],{"type":45,"value":452},{"type":45,"value":649}," Assess the cluster against MSK Express requirements and produce a target\nExpress specification (instance type, broker count, monthly cost projection).",{"type":39,"tag":55,"props":651,"children":652},{},[653,657,658,663],{"type":39,"tag":61,"props":654,"children":655},{},[656],{"type":45,"value":462},{"type":45,"value":492},{"type":39,"tag":161,"props":659,"children":661},{"className":660},[],[662],{"type":45,"value":166},{"type":45,"value":664}," from Phase 1.",{"type":39,"tag":55,"props":666,"children":667},{},[668],{"type":39,"tag":61,"props":669,"children":670},{},[671],{"type":45,"value":672},"Outputs:",{"type":39,"tag":244,"props":674,"children":675},{},[676,687,706],{"type":39,"tag":248,"props":677,"children":678},{},[679,685],{"type":39,"tag":161,"props":680,"children":682},{"className":681},[],[683],{"type":45,"value":684},"migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fcompatibility.\u003Ccluster_name>.json",{"type":45,"value":686}," — five-pillar verdict.",{"type":39,"tag":248,"props":688,"children":689},{},[690,696,698,704],{"type":39,"tag":161,"props":691,"children":693},{"className":692},[],[694],{"type":45,"value":695},"migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002FMSK_Sizing_Pricing.\u003Ccluster_name>.xlsx",{"type":45,"value":697}," — the AWS-published MSK Sizing\u002FPricing workbook (downloaded by the agent) with the six workload inputs filled into the ",{"type":39,"tag":161,"props":699,"children":701},{"className":700},[],[702],{"type":45,"value":703},"MSK Provisioned",{"type":45,"value":705}," sheet. Open it to read the broker count and cost recommendations.",{"type":39,"tag":248,"props":707,"children":708},{},[709,715],{"type":39,"tag":161,"props":710,"children":712},{"className":711},[],[713],{"type":45,"value":714},"migrate-to-msk-skill-artifacts\u002F\u003Ccluster_name>\u002Fmsk-sizing-inputs.\u003Ccluster_name>.json",{"type":45,"value":716}," — a record of the six input values and the cell each maps to.",{"type":39,"tag":55,"props":718,"children":719},{},[720],{"type":45,"value":721},"Assessment is implemented as two file processors (no live AWS API calls):",{"type":39,"tag":244,"props":723,"children":724},{},[725,736],{"type":39,"tag":248,"props":726,"children":727},{},[728,734],{"type":39,"tag":161,"props":729,"children":731},{"className":730},[],[732],{"type":45,"value":733},"scripts\u002Fcompatibility.py",{"type":45,"value":735}," — five-pillar compatibility assessment.",{"type":39,"tag":248,"props":737,"children":738},{},[739,745],{"type":39,"tag":161,"props":740,"children":742},{"className":741},[],[743],{"type":45,"value":744},"scripts\u002Fsizing.py",{"type":45,"value":746}," — computes the six workbook inputs from the discovery contract and fills them into the AWS-published workbook the agent downloads.",{"type":39,"tag":55,"props":748,"children":749},{},[750,752,758,760,764],{"type":45,"value":751},"Both run via ",{"type":39,"tag":161,"props":753,"children":755},{"className":754},[],[756],{"type":45,"value":757},"uv run",{"type":45,"value":759}," with PEP 723 inline dependencies. For the exact\ninvocation commands, see \"Running the assessment\" in\n",{"type":39,"tag":297,"props":761,"children":762},{"href":299},[763],{"type":45,"value":299},{"type":45,"value":168},{"type":39,"tag":130,"props":766,"children":768},{"id":767},"compatibility-pillars",[769],{"type":45,"value":770},"Compatibility pillars",{"type":39,"tag":55,"props":772,"children":773},{},[774,779],{"type":39,"tag":161,"props":775,"children":777},{"className":776},[],[778],{"type":45,"value":274},{"type":45,"value":780}," validates the source against MSK Express across five pillars:",{"type":39,"tag":546,"props":782,"children":783},{},[784,794,804,822,832],{"type":39,"tag":248,"props":785,"children":786},{},[787,792],{"type":39,"tag":61,"props":788,"children":789},{},[790],{"type":45,"value":791},"Topology",{"type":45,"value":793}," — AZ count, broker count, KRaft vs ZooKeeper, per-cluster broker quota.",{"type":39,"tag":248,"props":795,"children":796},{},[797,802],{"type":39,"tag":61,"props":798,"children":799},{},[800],{"type":45,"value":801},"Kafka version",{"type":45,"value":803}," — source version against the Express supported set (3.6, 3.8, 3.9).",{"type":39,"tag":248,"props":805,"children":806},{},[807,812,814,820],{"type":39,"tag":61,"props":808,"children":809},{},[810],{"type":45,"value":811},"Configs",{"type":45,"value":813}," — broker- and topic-level configs against Express's editable, read-only,\nrange-restricted, and enforced-value sets (sourced from the Express broker configuration\ndocumentation on ",{"type":39,"tag":161,"props":815,"children":817},{"className":816},[],[818],{"type":45,"value":819},"docs.aws.amazon.com\u002Fmsk",{"type":45,"value":821},").",{"type":39,"tag":248,"props":823,"children":824},{},[825,830],{"type":39,"tag":61,"props":826,"children":827},{},[828],{"type":45,"value":829},"Auth",{"type":45,"value":831}," — checks the source's authentication mechanism against those MSK Express supports and surfaces any incompatibilities.",{"type":39,"tag":248,"props":833,"children":834},{},[835,840],{"type":39,"tag":61,"props":836,"children":837},{},[838],{"type":45,"value":839},"Quotas",{"type":45,"value":841}," — peak workload against absolute Express ceilings (per-broker ingress\u002F\negress, partition count, IAM connection cap, per-partition throughput).",{"type":39,"tag":55,"props":843,"children":844},{},[845,847,851],{"type":45,"value":846},"See ",{"type":39,"tag":297,"props":848,"children":849},{"href":299},[850],{"type":45,"value":299},{"type":45,"value":852},"\nfor the full pseudocode, evidence codes, and verdict mapping.",{"type":39,"tag":130,"props":854,"children":856},{"id":855},"verdict-vocabulary",[857],{"type":45,"value":858},"Verdict vocabulary",{"type":39,"tag":55,"props":860,"children":861},{},[862],{"type":45,"value":863},"Each pillar emits one of three verdicts; the overall is the worst across pillars.",{"type":39,"tag":865,"props":866,"children":867},"table",{},[868,887],{"type":39,"tag":869,"props":870,"children":871},"thead",{},[872],{"type":39,"tag":873,"props":874,"children":875},"tr",{},[876,882],{"type":39,"tag":877,"props":878,"children":879},"th",{},[880],{"type":45,"value":881},"Verdict",{"type":39,"tag":877,"props":883,"children":884},{},[885],{"type":45,"value":886},"Meaning",{"type":39,"tag":888,"props":889,"children":890},"tbody",{},[891,909,926],{"type":39,"tag":873,"props":892,"children":893},{},[894,904],{"type":39,"tag":895,"props":896,"children":897},"td",{},[898],{"type":39,"tag":161,"props":899,"children":901},{"className":900},[],[902],{"type":45,"value":903},"INFO",{"type":39,"tag":895,"props":905,"children":906},{},[907],{"type":45,"value":908},"Your source cluster already lines up with MSK Express here. Surfaced for informational purposes. No action needed.",{"type":39,"tag":873,"props":910,"children":911},{},[912,921],{"type":39,"tag":895,"props":913,"children":914},{},[915],{"type":39,"tag":161,"props":916,"children":918},{"className":917},[],[919],{"type":45,"value":920},"ADVISORY",{"type":39,"tag":895,"props":922,"children":923},{},[924],{"type":45,"value":925},"Your source cluster differs from MSK Express here, but Express handles this for you at the target by adjusting or replacing the setting. Migration can proceed; review it so the resulting behavior change is expected.",{"type":39,"tag":873,"props":927,"children":928},{},[929,938],{"type":39,"tag":895,"props":930,"children":931},{},[932],{"type":39,"tag":161,"props":933,"children":935},{"className":934},[],[936],{"type":45,"value":937},"ACTION_REQUIRED",{"type":39,"tag":895,"props":939,"children":940},{},[941],{"type":45,"value":942},"Identifies a configuration or condition that MSK Express is not expected to accept in its current form. Remediation on the source prior to migration is recommended.",{"type":39,"tag":130,"props":944,"children":946},{"id":945},"sizing",[947],{"type":45,"value":948},"Sizing",{"type":39,"tag":55,"props":950,"children":951},{},[952,957,959,965,967,972,974,979,981,986,988,993],{"type":39,"tag":161,"props":953,"children":955},{"className":954},[],[956],{"type":45,"value":281},{"type":45,"value":958}," computes the six workbook inputs from the source workload (peak\nin\u002Fout, total partitions, retention). The agent downloads the AWS-published\nworkbook by reading the Express best-practices page and following its workbook\nhyperlink, then runs ",{"type":39,"tag":161,"props":960,"children":962},{"className":961},[],[963],{"type":45,"value":964},"sizing.py --workbook \u003Cdownloaded.xlsx>",{"type":45,"value":966},", which fills the\n",{"type":39,"tag":161,"props":968,"children":970},{"className":969},[],[971],{"type":45,"value":703},{"type":45,"value":973}," sheet and writes the filled\n",{"type":39,"tag":161,"props":975,"children":977},{"className":976},[],[978],{"type":45,"value":192},{"type":45,"value":980}," (plus a\n",{"type":39,"tag":161,"props":982,"children":984},{"className":983},[],[985],{"type":45,"value":200},{"type":45,"value":987}," record). Open the filled workbook to\nread the per-instance broker count and monthly cost; its formulas recalculate\non open. The workbook is downloaded at assessment time, not packaged with the\nskill, and the script itself performs no network access (it fills a workbook\nthe agent already downloaded, using the Python standard library). See\n",{"type":39,"tag":297,"props":989,"children":991},{"href":990},"references\u002Fassessment-sizing.md",[992],{"type":45,"value":990},{"type":45,"value":994}," for the cell\nmapping, the download flow, and caveats.",{"type":39,"tag":130,"props":996,"children":998},{"id":997},"assessment-rules",[999],{"type":45,"value":1000},"Assessment rules",{"type":39,"tag":244,"props":1002,"children":1003},{},[1004,1023,1035,1072],{"type":39,"tag":248,"props":1005,"children":1006},{},[1007,1009,1014,1016,1021],{"type":45,"value":1008},"Run ",{"type":39,"tag":161,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":45,"value":274},{"type":45,"value":1015}," and ",{"type":39,"tag":161,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":45,"value":281},{"type":45,"value":1022}," independently; neither blocks the other.",{"type":39,"tag":248,"props":1024,"children":1025},{},[1026,1028,1033],{"type":45,"value":1027},"Surface any ",{"type":39,"tag":161,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":45,"value":937},{"type":45,"value":1034}," evidence to the user for awareness, but do not gate further phases on it. Express may still accept the workload with mitigations.",{"type":39,"tag":248,"props":1036,"children":1037},{},[1038,1043,1045,1050,1052,1058,1059,1065,1067,1071],{"type":39,"tag":61,"props":1039,"children":1040},{},[1041],{"type":45,"value":1042},"Do NOT pivot back into discovery.",{"type":45,"value":1044}," Assessment operates on the existing\n",{"type":39,"tag":161,"props":1046,"children":1048},{"className":1047},[],[1049],{"type":45,"value":232},{"type":45,"value":1051}," as-is. Partial data is fine — the scripts emit\nADVISORY evidence (",{"type":39,"tag":161,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":45,"value":1057},"METRICS_MISSING",{"type":45,"value":67},{"type":39,"tag":161,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":45,"value":1064},"AZ_COUNT_UNKNOWN",{"type":45,"value":1066},", etc.) for\nmissing fields; surface those findings and stop. Do not propose Kafka CLI\ncommands, IaC walks, scripts, or questionnaires to fill the gaps. Full\nforbidden-behavior list in\n",{"type":39,"tag":297,"props":1068,"children":1069},{"href":299},[1070],{"type":45,"value":299},{"type":45,"value":168},{"type":39,"tag":248,"props":1073,"children":1074},{},[1075,1080,1082,1086],{"type":39,"tag":61,"props":1076,"children":1077},{},[1078],{"type":45,"value":1079},"Your response MUST follow the assessment response template",{"type":45,"value":1081}," in\n",{"type":39,"tag":297,"props":1083,"children":1084},{"href":299},[1085],{"type":45,"value":299},{"type":45,"value":1087},"\n(section \"Response Template\"). One template covers both artifacts. Do\nnot freestyle the post-script summary — the template defines required\nsections, mandatory vocabulary (use the verdict strings verbatim), and\nforbidden content (no scores, no narrative editorializing, no in-prose\ncost \u002F instance recommendations — the user reads those from the filled workbook).",{"type":39,"tag":436,"props":1089,"children":1090},{},[],{"type":39,"tag":48,"props":1092,"children":1094},{"id":1093},"phase-3-simulation-optional",[1095],{"type":45,"value":1096},"Phase 3 — Simulation (optional)",{"type":39,"tag":55,"props":1098,"children":1099},{},[1100,1102,1106,1108,1113,1115,1120],{"type":45,"value":1101},"Deploy a temporary, isolated MSK Express cluster and client fleet in the\ncustomer's account so they can see how Express performs on their own workload, then\nrun one of two vended tests (End-to-End Latency, Broker Restart Under Load) and hand\nover a CloudWatch dashboard. Follow the 12-step conversational flow and all deploy,\nsizing, and guardrail details in ",{"type":39,"tag":297,"props":1103,"children":1104},{"href":306},[1105],{"type":45,"value":306},{"type":45,"value":1107},";\nthe deterministic artifacts it drives are\n",{"type":39,"tag":297,"props":1109,"children":1111},{"href":1110},"scripts\u002Fsimulation_load_test_config.py",[1112],{"type":45,"value":1110},{"type":45,"value":1114}," and the\nstatic ",{"type":39,"tag":297,"props":1116,"children":1118},{"href":1117},"assets\u002Fsimulation-stack.yaml",[1119],{"type":45,"value":1117},{"type":45,"value":168},{"type":39,"tag":436,"props":1122,"children":1123},{},[],{"type":39,"tag":48,"props":1125,"children":1127},{"id":1126},"execution-model",[1128],{"type":45,"value":1129},"Execution model",{"type":39,"tag":55,"props":1131,"children":1132},{},[1133,1135,1140],{"type":45,"value":1134},"Scripts run on the customer's local machine via ",{"type":39,"tag":161,"props":1136,"children":1138},{"className":1137},[],[1139],{"type":45,"value":757},{"type":45,"value":1141},". They declare their own\ndependencies (PEP 723) and are pure file processors — no AWS API calls, no\nnetwork access, and no third-party dependencies (standard library only).",{"type":39,"tag":48,"props":1143,"children":1145},{"id":1144},"security-considerations",[1146],{"type":45,"value":1147},"Security Considerations",{"type":39,"tag":55,"props":1149,"children":1150},{},[1151,1153,1160,1162,1169],{"type":45,"value":1152},"Apply these controls at every phase. For additional detail, see\n",{"type":39,"tag":297,"props":1154,"children":1157},{"href":1155,"rel":1156},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fsecurity.html",[397],[1158],{"type":45,"value":1159},"MSK Security best practices",{"type":45,"value":1161},"\nand ",{"type":39,"tag":297,"props":1163,"children":1166},{"href":1164,"rel":1165},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fmsk\u002Flatest\u002Fdeveloperguide\u002Fiam-access-control.html",[397],[1167],{"type":45,"value":1168},"MSK IAM access control",{"type":45,"value":168},{"type":39,"tag":546,"props":1171,"children":1172},{},[1173,1190,1200,1210,1220,1230,1291],{"type":39,"tag":248,"props":1174,"children":1175},{},[1176,1181,1183,1189],{"type":39,"tag":61,"props":1177,"children":1178},{},[1179],{"type":45,"value":1180},"Encryption in transit (mandatory).",{"type":45,"value":1182}," Enforce TLS for client-broker traffic\non the MSK Express target (",{"type":39,"tag":161,"props":1184,"children":1186},{"className":1185},[],[1187],{"type":45,"value":1188},"EncryptionInTransit.ClientBroker = TLS",{"type":45,"value":821},{"type":39,"tag":248,"props":1191,"children":1192},{},[1193,1198],{"type":39,"tag":61,"props":1194,"children":1195},{},[1196],{"type":45,"value":1197},"Encryption at rest (mandatory).",{"type":45,"value":1199}," Provision the target cluster with a\ncustomer-managed KMS key (or AWS-managed if your compliance posture allows).",{"type":39,"tag":248,"props":1201,"children":1202},{},[1203,1208],{"type":39,"tag":61,"props":1204,"children":1205},{},[1206],{"type":45,"value":1207},"Authentication — prefer IAM over long-lived credentials.",{"type":45,"value":1209}," Configure the\nMSK Express target with IAM authentication as the sole client auth method.\nThis gives ephemeral, role-based credentials with full CloudTrail coverage.",{"type":39,"tag":248,"props":1211,"children":1212},{},[1213,1218],{"type":39,"tag":61,"props":1214,"children":1215},{},[1216],{"type":45,"value":1217},"Credential storage — use AWS Secrets Manager.",{"type":45,"value":1219}," Store SASL\u002FSCRAM and TLS\ncredentials for source cluster access in Secrets Manager. Never pass passwords\nas CLI arguments.",{"type":39,"tag":248,"props":1221,"children":1222},{},[1223,1228],{"type":39,"tag":61,"props":1224,"children":1225},{},[1226],{"type":45,"value":1227},"Network isolation.",{"type":45,"value":1229}," Deploy MSK clusters in private subnets. Use security\ngroups scoped to specific CIDR ranges or security group references. Do NOT use\n0.0.0.0\u002F0 ingress rules.",{"type":39,"tag":248,"props":1231,"children":1232},{},[1233,1238,1240,1246,1248],{"type":39,"tag":61,"props":1234,"children":1235},{},[1236],{"type":45,"value":1237},"CloudTrail logging and CloudWatch alarms.",{"type":45,"value":1239}," Ensure CloudTrail is enabled in\nthe target account and covers ",{"type":39,"tag":161,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":45,"value":1245},"kafka.amazonaws.com",{"type":45,"value":1247}," API calls. Configure alarms:",{"type":39,"tag":244,"props":1249,"children":1250},{},[1251,1262,1273,1286],{"type":39,"tag":248,"props":1252,"children":1253},{},[1254,1260],{"type":39,"tag":161,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":45,"value":1259},"ClientAuthenticationFailure",{"type":45,"value":1261}," — surge indicates credential problems or attack",{"type":39,"tag":248,"props":1263,"children":1264},{},[1265,1271],{"type":39,"tag":161,"props":1266,"children":1268},{"className":1267},[],[1269],{"type":45,"value":1270},"ConnectionCloseCount",{"type":45,"value":1272}," — abnormal spike may indicate connection-flooding",{"type":39,"tag":248,"props":1274,"children":1275},{},[1276,1278,1284],{"type":45,"value":1277},"CloudTrail metric filters for denied ",{"type":39,"tag":161,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":45,"value":1283},"kafka-cluster:*",{"type":45,"value":1285}," actions",{"type":39,"tag":248,"props":1287,"children":1288},{},[1289],{"type":45,"value":1290},"Connection-rate alarms approaching the 100 conn\u002Fsec\u002Fbroker IAM limit",{"type":39,"tag":248,"props":1292,"children":1293},{},[1294,1299],{"type":39,"tag":61,"props":1295,"children":1296},{},[1297],{"type":45,"value":1298},"Sensitive data handling.",{"type":45,"value":1300}," Discovery and assessment outputs contain broker\naddresses, auth hints, and broker config values. Treat these as sensitive — do\nnot paste into public channels or ticketing systems without redaction.",{"type":39,"tag":48,"props":1302,"children":1304},{"id":1303},"troubleshooting",[1305],{"type":45,"value":1306},"Troubleshooting",{"type":39,"tag":55,"props":1308,"children":1309},{},[1310,1315,1317,1323,1325,1331],{"type":39,"tag":61,"props":1311,"children":1312},{},[1313],{"type":45,"value":1314},"Single-broker \u002F single-AZ source.",{"type":45,"value":1316}," Topology pillar emits ",{"type":39,"tag":161,"props":1318,"children":1320},{"className":1319},[],[1321],{"type":45,"value":1322},"BROKER_COUNT_LT_3",{"type":45,"value":1324}," \u002F\n",{"type":39,"tag":161,"props":1326,"children":1328},{"className":1327},[],[1329],{"type":45,"value":1330},"AZ_COUNT_NOT_3",{"type":45,"value":1332}," ADVISORY — Express auto-fixes at the target by deploying across 3\nAZs with ≥3 brokers regardless of source.",{"type":39,"tag":55,"props":1334,"children":1335},{},[1336,1341,1342,1348],{"type":39,"tag":61,"props":1337,"children":1338},{},[1339],{"type":45,"value":1340},"Out-of-range topic configs.",{"type":45,"value":492},{"type":39,"tag":161,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":45,"value":1347},"max.compaction.lag.ms \u003C 1 day",{"type":45,"value":1349}," is the only\nExpress-rejected topic-config bound encoded in compatibility.py. Adjust on the\nsource before migration.",{"type":39,"tag":55,"props":1351,"children":1352},{},[1353,1358,1360,1365,1367,1373],{"type":39,"tag":61,"props":1354,"children":1355},{},[1356],{"type":45,"value":1357},"Workbook recommendations look blank or stale.",{"type":45,"value":1359}," The recommendation and cost\ncells are workbook formulas; they populate once the filled workbook is opened\nin Excel \u002F LibreOffice \u002F Sheets and its formulas recalculate. ",{"type":39,"tag":161,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":45,"value":281},{"type":45,"value":1366}," sets\n",{"type":39,"tag":161,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":45,"value":1372},"fullCalcOnLoad",{"type":45,"value":1374}," so this happens automatically on open — if your spreadsheet\napp has automatic recalculation disabled, trigger a manual recalculation.",{"items":1376,"total":1480},[1377,1394,1409,1424,1439,1449,1464],{"slug":1378,"name":1378,"fn":1379,"description":1380,"org":1381,"tags":1382,"stars":21,"repoUrl":22,"updatedAt":1393},"agents-build","add capabilities to existing agent projects","Use when adding capabilities to an existing agent project — memory, app integration, VPC, multi-agent, migration, model changes, browser, code interpreter, or resource removal. Triggers on: \"add memory\", \"remember across sessions\", \"call agent from app\", \"invoke agent from code\", \"auth to call agent\", \"streaming responses\", \"VPC\", \"VPC connectivity\", \"VPC error\", \"can't reach from VPC\", \"multi-agent\", \"A2A\", \"A2A auth\", \"orchestrator not delegating\", \"specialist not called\", \"migrate Bedrock Agent\", \"after import\", \"migration issue\", \"framework for migration\", \"change model\", \"browser tool\", \"code interpreter\", \"delete agent\", \"tear down\", \"agentcore remove\", \"cross-account memory\", \"resource-based policy on memory\", \"pay for x402 content\", \"402 Payment Required\", \"microtransactions\", \"paid API or tool\". Not for connecting to external APIs via Gateway — use agents-connect. Not for scaffolding a new project — use agents-get-started. Not for CLI\u002Fdev server errors — use agents-debug. Strands vs LangGraph in a migration context routes here.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1383,1386,1389,1390],{"name":1384,"slug":1385,"type":15},"Agents","agents",{"name":1387,"slug":1388,"type":15},"Automation","automation",{"name":20,"slug":8,"type":15},{"name":1391,"slug":1392,"type":15},"Engineering","engineering","2026-07-12T08:42:53.812877",{"slug":1395,"name":1395,"fn":1396,"description":1397,"org":1398,"tags":1399,"stars":21,"repoUrl":22,"updatedAt":1408},"agents-connect","connect agents to external services","Use when connecting your agent to external APIs, tools, or services via Gateway, or restricting tool access with Cedar policies. Handles gateway setup, target types, outbound auth (OAuth, API key, IAM), credentials, and Cedar policy authoring. Triggers on: \"connect to API\", \"add gateway\", \"connect to MCP server\", \"Lambda tools\", \"OpenAPI\", \"gateway target\", \"Cedar policy\", \"restrict tools\", \"policy engine\", \"gateway auth error\", \"store API key\", \"outbound credential\", \"env var API key\", \"API key None after deploy\", \"credential not available after deploy\", \"should this be a gateway target\", \"give my agent tools\", \"add tools to agent\". Not for inbound auth (who can call your agent) — use agents-harden. Not for debugging agent behavior — use agents-debug. Not for VPC networking errors (agent can't reach APIs due to VPC) — use agents-build. Not for creating or hosting a new MCP server project — use agents-get-started.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1400,1401,1404,1407],{"name":1384,"slug":1385,"type":15},{"name":1402,"slug":1403,"type":15},"API Development","api-development",{"name":1405,"slug":1406,"type":15},"Authentication","authentication",{"name":20,"slug":8,"type":15},"2026-07-16T06:00:38.866147",{"slug":1410,"name":1410,"fn":1411,"description":1412,"org":1413,"tags":1414,"stars":21,"repoUrl":22,"updatedAt":1423},"agents-debug","debug agent and environment issues","Use when your agent or environment is broken — wrong answers, errors, timeouts, tool failures, or CLI issues. Reads traces and logs to diagnose root causes. Also checks prerequisites when the CLI itself isn't working. Triggers on: \"agent not working\", \"wrong answer\", \"agent error\", \"tool call failing\", \"debug agent\", \"check logs\", \"read traces\", \"broken\", \"500 error\", \"424 error\", \"model access denied\", \"command not found\", \"stuck in DELETING\", \"maxVms exceeded\", \"cold start diagnosis\", \"cold start slow\", \"agentcore create error\", \"create failed\", \"exit code 7\", \"connection refused local dev\". Not for deploy failures — use agents-deploy. Not for performance tuning without errors — use agents-optimize. Not for VPC configuration — use agents-build. Not for observability setup or missing logs — use agents-optimize.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1415,1416,1417,1420],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1418,"slug":1419,"type":15},"Debugging","debugging",{"name":1421,"slug":1422,"type":15},"Observability","observability","2026-07-16T06:00:44.679093",{"slug":1425,"name":1425,"fn":1426,"description":1427,"org":1428,"tags":1429,"stars":21,"repoUrl":22,"updatedAt":1438},"agents-deploy","deploy AI agents to AWS","Use when deploying your agent to AWS, or when a deploy has failed. Handles pre-flight validation, CDK\u002FIAM\u002Fquota error diagnosis, version management, rollback, and canary deployments. Triggers on: \"deploy my agent\", \"agentcore deploy\", \"deploy failed\", \"CDK error\", \"rollback\", \"canary deploy\", \"pin version\", \"redeploy\", \"deploy stuck\". Not for production hardening — use agents-harden. Not for adding capabilities before deploy — use agents-build or agents-connect. Not for VPC configuration errors — use agents-build.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1430,1431,1432,1435],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1433,"slug":1434,"type":15},"CI\u002FCD","ci-cd",{"name":1436,"slug":1437,"type":15},"Deployment","deployment","2026-07-12T08:42:55.059577",{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1443,"tags":1444,"stars":21,"repoUrl":22,"updatedAt":1448},"agents-get-started","scaffold and deploy new agent projects","Use when a developer wants to create a new agent project or get started with AgentCore. Handles framework selection, project scaffolding, first deploy, and first invocation. Triggers on: \"build an agent\", \"create an agent\", \"get started\", \"new project\", \"agentcore create\", \"which framework\", \"Strands vs LangGraph\", \"hello world agent\", \"first agent\", \"create MCP server\", \"host MCP server\", \"agentcore dev\", \"dev server\", \"what port\", \"local development\". Not for adding capabilities to existing projects — use agents-build or agents-connect. Strands vs LangGraph in a migration context routes to agents-build, not here. Connecting to an existing MCP server routes to agents-connect, not here.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1445,1446,1447],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1436,"slug":1437,"type":15},"2026-07-12T08:42:51.963247",{"slug":1450,"name":1450,"fn":1451,"description":1452,"org":1453,"tags":1454,"stars":21,"repoUrl":22,"updatedAt":1463},"agents-harden","harden agents for production","Use when preparing your agent for production — IAM scoping, inbound auth (JWT, SigV4), secrets management, cold start optimization, session lifecycle, rate limiting, input validation, and quota guidance. Triggers on: \"production checklist\", \"harden agent\", \"production ready\", \"secure agent\", \"inbound auth\", \"going live\", \"cold start optimization\", \"session lifecycle\", \"StopRuntimeSession\", \"quota\", \"throttling\", \"maxVms\", \"rate limit\", \"security audit of outbound API calls\", \"gateway target audit for production\", \"restrict who can call\", \"lock down endpoint\", \"only our app can call\". Not for Cedar tool-restriction policies — use agents-connect. Not for quality measurement — use agents-optimize. Not for outbound credential storage or API key wiring — use agents-connect. Not for A2A agent-to-agent auth — use agents-build. Cold start observation and diagnosis (not optimization) routes to agents-debug.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1455,1456,1457,1460],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1458,"slug":1459,"type":15},"Best Practices","best-practices",{"name":1461,"slug":1462,"type":15},"Security","security","2026-07-16T06:00:42.174705",{"slug":1465,"name":1465,"fn":1466,"description":1467,"org":1468,"tags":1469,"stars":21,"repoUrl":22,"updatedAt":1479},"agents-optimize","optimize agent quality and performance","Use when measuring or improving agent quality and performance — set up evaluators, online monitoring, CI\u002FCD quality gates, observability, or cost optimization. Triggers on: \"evaluate my agent\", \"add evaluator\", \"measure quality\", \"quality gate\", \"run evals\", \"agent too slow\", \"why is it slow\", \"reduce latency\", \"set up observability\", \"CloudWatch dashboard\", \"how much does my agent cost\", \"cost optimization\", \"logs not showing up\", \"logs missing\", \"spans not found\", \"eval failing\", \"eval error\", \"dev traces\", \"local traces\", \"agentcore dev traces\", \"traces to CloudWatch\". Not for debugging errors or crashes — use agents-debug. Slow but correct routes here; broken routes to debug.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1470,1471,1472,1475,1476],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1473,"slug":1474,"type":15},"Evals","evals",{"name":1421,"slug":1422,"type":15},{"name":1477,"slug":1478,"type":15},"Performance","performance","2026-07-12T08:42:56.488105",114,{"items":1482,"total":1599},[1483,1490,1497,1504,1511,1517,1524,1532,1549,1562,1574,1589],{"slug":1378,"name":1378,"fn":1379,"description":1380,"org":1484,"tags":1485,"stars":21,"repoUrl":22,"updatedAt":1393},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1486,1487,1488,1489],{"name":1384,"slug":1385,"type":15},{"name":1387,"slug":1388,"type":15},{"name":20,"slug":8,"type":15},{"name":1391,"slug":1392,"type":15},{"slug":1395,"name":1395,"fn":1396,"description":1397,"org":1491,"tags":1492,"stars":21,"repoUrl":22,"updatedAt":1408},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1493,1494,1495,1496],{"name":1384,"slug":1385,"type":15},{"name":1402,"slug":1403,"type":15},{"name":1405,"slug":1406,"type":15},{"name":20,"slug":8,"type":15},{"slug":1410,"name":1410,"fn":1411,"description":1412,"org":1498,"tags":1499,"stars":21,"repoUrl":22,"updatedAt":1423},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1500,1501,1502,1503],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1418,"slug":1419,"type":15},{"name":1421,"slug":1422,"type":15},{"slug":1425,"name":1425,"fn":1426,"description":1427,"org":1505,"tags":1506,"stars":21,"repoUrl":22,"updatedAt":1438},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1507,1508,1509,1510],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1433,"slug":1434,"type":15},{"name":1436,"slug":1437,"type":15},{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1512,"tags":1513,"stars":21,"repoUrl":22,"updatedAt":1448},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1514,1515,1516],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1436,"slug":1437,"type":15},{"slug":1450,"name":1450,"fn":1451,"description":1452,"org":1518,"tags":1519,"stars":21,"repoUrl":22,"updatedAt":1463},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1520,1521,1522,1523],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1458,"slug":1459,"type":15},{"name":1461,"slug":1462,"type":15},{"slug":1465,"name":1465,"fn":1466,"description":1467,"org":1525,"tags":1526,"stars":21,"repoUrl":22,"updatedAt":1479},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1527,1528,1529,1530,1531],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1473,"slug":1474,"type":15},{"name":1421,"slug":1422,"type":15},{"name":1477,"slug":1478,"type":15},{"slug":1533,"name":1533,"fn":1534,"description":1535,"org":1536,"tags":1537,"stars":21,"repoUrl":22,"updatedAt":1548},"amazon-aurora-mysql","manage Amazon Aurora MySQL clusters","Amazon Aurora MySQL — creates, modifies, and advises on Aurora MySQL clusters specifically (MySQL-compatible engine, Aurora serverless, parallel query). Trigger for Aurora MySQL cluster operations, ACU sizing, I\u002FO-Optimized storage, commitment pricing, or MySQL upgrade planning. Aurora MySQL uses full (VPC-based) configuration — express configuration is PostgreSQL-only. For Aurora PostgreSQL, use amazon-aurora-postgresql instead. Contains safety guardrails and response templates that override defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1538,1539,1542,1545],{"name":20,"slug":8,"type":15},{"name":1540,"slug":1541,"type":15},"Database","database",{"name":1543,"slug":1544,"type":15},"MySQL","mysql",{"name":1546,"slug":1547,"type":15},"Serverless","serverless","2026-07-12T08:43:13.27939",{"slug":1550,"name":1550,"fn":1551,"description":1552,"org":1553,"tags":1554,"stars":21,"repoUrl":22,"updatedAt":1561},"amazon-aurora-postgresql","configure Amazon Aurora PostgreSQL clusters","Amazon Aurora PostgreSQL — creates, modifies, and advises on Aurora PostgreSQL clusters specifically (PostgreSQL-compatible engine, Aurora serverless, express configuration, pgvector, Babelfish). Trigger for Aurora PostgreSQL cluster operations, express-configuration quick-start, ACU sizing, I\u002FO-Optimized storage, commitment pricing, or PostgreSQL upgrade planning. For Aurora MySQL, use amazon-aurora-mysql instead. Contains safety guardrails, express-first routing, and response templates that override defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1555,1556,1557,1560],{"name":20,"slug":8,"type":15},{"name":1540,"slug":1541,"type":15},{"name":1558,"slug":1559,"type":15},"PostgreSQL","postgresql",{"name":1546,"slug":1547,"type":15},"2026-07-16T06:00:34.789624",{"slug":1563,"name":1563,"fn":1564,"description":1565,"org":1566,"tags":1567,"stars":21,"repoUrl":22,"updatedAt":1573},"amazon-bedrock","build generative AI apps with Amazon Bedrock","Builds generative AI applications on Amazon Bedrock. Covers model invocation (Converse API, InvokeModel), RAG with Knowledge Bases, Bedrock Agents, Guardrails, and AgentCore. Use when invoking models, setting up Knowledge Bases, creating agents, applying guardrails, deploying to AgentCore, migrating\u002Fporting\u002Fconverting a Bedrock Agent (including inline agents) to an AgentCore Harness, troubleshooting Bedrock errors (ThrottlingException, AccessDeniedException), or choosing models (Claude, Llama, Nova, Titan). ALSO USE for prompt caching setup and debugging, quota health checks and throttling diagnosis, cost attribution and tracking, migrating between Claude model generations (4.5 to 4.6 to 4.7), chunking strategies, API selection (Converse vs InvokeModel), guardrail capabilities, and model selection. Also covers AgentCore Payments setup (x402, microtransactions, Payment Manager, Connector, Instrument, Coinbase CDP, Stripe Privy, 402 Payment Required, pay for content, paid endpoint, agent payments). NOT for custom model training, Rekognition, or Comprehend.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1568,1569,1570],{"name":1384,"slug":1385,"type":15},{"name":20,"slug":8,"type":15},{"name":1571,"slug":1572,"type":15},"LLM","llm","2026-07-25T05:30:35.20899",{"slug":1575,"name":1575,"fn":1576,"description":1577,"org":1578,"tags":1579,"stars":21,"repoUrl":22,"updatedAt":1588},"amazon-documentdb","manage Amazon DocumentDB clusters","Manages Amazon DocumentDB end-to-end — serverless-on-8.0 cluster setup, TLS\u002FVPC\u002Fdriver config, flexible-schema and vector-search data modeling, MongoDB compatibility assessment, DMS-based migration, slow-query diagnosis, major version upgrades (4.0→5.0→8.0), Well-Architected reviews (41-check wa_review.py), cost estimation, and security hardening. Retrieve for every DocumentDB question and when the user asks to set up or migrate MongoDB to AWS — DocumentDB is AWS's MongoDB-compatible managed database. Triggers: JSON document store, document database, MongoDB on AWS, Nested fields, Lambda cannot connect, TLS handshake, VPC port 27017, IAM auth, Secrets Manager, encryption at rest, $graphLookup, flexible schema, COLLSCAN, compound index, DMS migration, CDC cutover, $vectorSearch, RAG, Global Clusters, DR replication, cost sizing, audit, health check, production-readiness.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1580,1581,1582,1585],{"name":20,"slug":8,"type":15},{"name":1540,"slug":1541,"type":15},{"name":1583,"slug":1584,"type":15},"MongoDB","mongodb",{"name":1586,"slug":1587,"type":15},"NoSQL","nosql","2026-07-12T08:43:00.455878",{"slug":1590,"name":1590,"fn":1591,"description":1592,"org":1593,"tags":1594,"stars":21,"repoUrl":22,"updatedAt":1598},"amazon-dynamodb","design and debug DynamoDB data layers","Designs, reviews, and debugs DynamoDB data layers from design axioms — enumerates access patterns, chooses partition\u002Fsort keys and GSIs, decides single-table vs. multi-table, configures Streams, Global Tables, TTL, and zero-ETL integrations to OpenSearch\u002FRedshift\u002FSageMaker Lakehouse, and produces a defensible data-layer design with a monthly cost estimate and optional live validation. Applies whenever a user is designing, reviewing, or refactoring anything backed by DynamoDB — schemas, access patterns, GSIs, single- vs. multi-table choices, Streams consumers, transactional outboxes, Global Tables, zero-ETL pipelines — even when they don't say \"axioms\" or \"design review.\" Also applies when debugging hot partitions, throttling, unbounded Scans, LWW conflicts, or surprise bills on DynamoDB workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1595,1596,1597],{"name":20,"slug":8,"type":15},{"name":1540,"slug":1541,"type":15},{"name":1586,"slug":1587,"type":15},"2026-07-16T06:00:37.690386",115]