[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-migrating-to-amazon-redshift":3,"mdc-3z1en4-key":35,"related-repo-aws-migrating-to-amazon-redshift":1256,"related-org-aws-migrating-to-amazon-redshift":1361},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"migrating-to-amazon-redshift","migrate data warehouses to Amazon Redshift","Guides an end-to-end data-warehouse migration to Amazon Redshift — discovery, schema\u002FSQL\u002Fstored-procedure\u002Fmacro\u002Fscript conversion, data migration, validation, performance comparison, and reporting. Source-routed via `references\u002F\u003Csource>\u002F`; Teradata (Vantage) is the supported source; additional sources are added as their own `references\u002F\u003Csource>\u002F` sets. Text-only knowledge (no executable code) — the AI generates all execution at runtime. Applies when a user wants to migrate Teradata to Amazon Redshift, convert Teradata DDL\u002FSQL\u002Fstored procedures\u002Fmacros\u002FBTEQ to Redshift\u002FRSQL, or assess Teradata-to-Redshift migration complexity. Applies only to migrations targeting Amazon Redshift; migrations to other platforms (Snowflake, BigQuery, Databricks, etc.) are out of scope regardless of source. Does not cover general Redshift administration, performance tuning, or troubleshooting of existing Redshift clusters (no migration involved), or sources not listed under references\u002F.",{"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,22],{"name":13,"slug":14,"type":15},"Data Engineering","data-engineering","tag",{"name":17,"slug":18,"type":15},"Data Warehouse","data-warehouse",{"name":20,"slug":21,"type":15},"Migration","migration",{"name":23,"slug":8,"type":15},"AWS",1822,"https:\u002F\u002Fgithub.com\u002Faws\u002Fagent-toolkit-for-aws","2026-07-25T05:56:34.61567",null,157,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"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\u002Fmigrating-to-amazon-redshift","---\nname: migrating-to-amazon-redshift\ndescription: \"Guides an end-to-end data-warehouse migration to Amazon Redshift — discovery, schema\u002FSQL\u002Fstored-procedure\u002Fmacro\u002Fscript conversion, data migration, validation, performance comparison, and reporting. Source-routed via `references\u002F\u003Csource>\u002F`; Teradata (Vantage) is the supported source; additional sources are added as their own `references\u002F\u003Csource>\u002F` sets. Text-only knowledge (no executable code) — the AI generates all execution at runtime. Applies when a user wants to migrate Teradata to Amazon Redshift, convert Teradata DDL\u002FSQL\u002Fstored procedures\u002Fmacros\u002FBTEQ to Redshift\u002FRSQL, or assess Teradata-to-Redshift migration complexity. Applies only to migrations targeting Amazon Redshift; migrations to other platforms (Snowflake, BigQuery, Databricks, etc.) are out of scope regardless of source. Does not cover general Redshift administration, performance tuning, or troubleshooting of existing Redshift clusters (no migration involved), or sources not listed under references\u002F.\"\nversion: 1\n---\n\n# Migrating to Amazon Redshift\n\n## What this skill is\n\nThis skill is **AI guidance, not an execution framework**. It is **entirely Markdown\nknowledge** (rules, mappings, patterns, best practices) — **no executable code**. All\nexecution — conversion, the discovery\u002Fmigration\u002Fvalidation runners, dependencies, and\ninfrastructure — **you (the AI) generate at runtime** from this knowledge, tailored to the\ncustomer's environment.\n\nPrinciple: **knowledge over shipped code → less drift, nothing for the customer to run or\ndepend on, reliable first-time results.** Do not look for a pyproject, a tools package, an\norchestrator engine, or shipped scripts — there are none by design; you generate execution.\n\n> **Runtime:** this skill works **with or without the AWS MCP server** — step guidance uses AWS\n> CLI syntax. Running it **with the AWS MCP server is recommended** for sandboxed execution and\n> audit logging; without it, the AI runs the generated scripts on the host shell (assumes Bash,\n> Python 3, and AWS CLI + credentials). Do not assume MCP-only tools are available.\n\n## Source routing\n\nThis skill migrates a supported **source data warehouse to Amazon Redshift**. First identify the\n**source system**, then load that source's knowledge under `references\u002F\u003Csource>\u002F`:\n\n- **Teradata (Vantage)** → `references\u002Fteradata\u002F` — supported (all references below).\n- *Other sources (e.g. Snowflake, Oracle) — unsupported; each is added as its own `references\u002F\u003Csource>\u002F` set when ready.*\n\nThe **workflow is source-agnostic** (discovery → convert → migrate → validate → performance →\nreport); only the **conversion knowledge** is source-specific. Everything below is the Teradata set.\n\n## When to use\n\n- Migrating a Teradata system (Vantage) to Amazon Redshift.\n- Converting Teradata DDL, SQL, stored procedures, macros, or BTEQ to Redshift\u002FRSQL.\n- Assessing Teradata→Redshift migration complexity\u002Feffort.\n\n## Operating principles\n\n- **Discovery is strictly read-only (SELECT-only) on the source.** Never change production\n  state: no DDL\u002FDML, and never enable logging (`BEGIN\u002FREPLACE QUERY LOGGING`). If DBQL is\n  empty, mark it `unavailable` and fall back to always-on `DBC.AMPUsageV` — see\n  `references\u002Fteradata\u002Fdiscovery-queries.md`.\n- **Skill provides knowledge; you generate execution.** Read the `references\u002F` to reason and\n  convert — apply the rules in `references\u002Fteradata\u002Fconversion-rules.md` directly for conversion, and\n  generate the discovery\u002Fmigration\u002Fvalidation runners (and the read-only discovery collector\n  from `references\u002Fteradata\u002Fdiscovery-queries.md`) tailored to the environment.\n- **Generate, don't assume a framework.** Assume the environment has Bash, Python 3, and AWS\n  CLI + credentials. Any Python lib a generated script needs (`teradatasql`, `boto3`, …) is\n  `pip install`-ed on demand by that script \u002F its run-instructions — pin exact versions.\n  Teradata **TTU** (BTEQ\u002FTPT) is **Linux\u002FWindows-only — not macOS**; prefer **WRITE_NOS** +\n  **`teradatasql`** (cross-platform, no client) for discovery\u002Fextract unless a TTU\u002FLinux host exists.\n- **Credentials:** use a **read-only** Teradata user; prefer IAM roles over IAM users. For\n  **production**, reference credentials from **AWS Secrets Manager or Systems Manager\n  Parameter Store**. For **local development only**, a git-ignored `.env` file or profile may\n  be used — never commit it. Never hard-code or echo secrets. In a portable\n  bundle, reference a **co-located credentials file** and ship a `credentials.env.example` template — the\n  real file is git-ignored.\n- **Persist state in files.** All generated output goes under a git-ignored `output\u002F` in the\n  user's working dir; keep `output\u002Fstate.md` current so work is resumable.\n\n## Workflow (phases)\n\nRun in order; each phase's `result\u002F` feeds the next (see `references\u002Fteradata\u002Forchestration.md`).\n\n1. **Discovery** — inventory the source. → `references\u002Fteradata\u002Fdiscovery-queries.md` (read-only collection SQL + BTEQ driver template the AI generates) → `output\u002Fdiscovery\u002Fresult\u002Finventory.json`\n2. **Conversion** — schema + code. Apply the conversion rules directly, flag the\n   manual-rewrite long tail, and fix Redshift errors from the references. →\n   `references\u002Fteradata\u002Fconversion-rules.md`, `references\u002Fteradata\u002Fdata-type-mapping.md`,\n   `references\u002Fteradata\u002Farchitecture-mapping.md`, `references\u002Fteradata\u002Fstored-procedure-migration.md`,\n   `references\u002Fteradata\u002Fbteq-to-rsql.md`, `references\u002Fteradata\u002Fcommon-errors.md`\n3. **Data migration** — extract → S3 → COPY, restartable. → `references\u002Fteradata\u002Fdata-migration-patterns.md`\n4. **Validation** — counts\u002Faggregates\u002Fsampling. → `references\u002Fteradata\u002Fvalidation-patterns.md`\n5. **Performance** — baseline vs Redshift; size the target. → `references\u002Fteradata\u002Fperformance.md`, `references\u002Fteradata\u002Fsizing.md`\n6. **Reporting** — aggregate all phases. → `references\u002Fteradata\u002Freporting.md`\n\n## Conversion (how the AI applies it)\n\nThere is no converter to run — convert by **applying the rules in\n`references\u002Fteradata\u002Fconversion-rules.md` directly** (with the type \u002F architecture \u002F stored-procedure \u002F\nBTEQ references): apply the deterministic rules to the well-understood bulk, **flag the\nmanual-rewrite constructs** with their suggested rewrites, assign a **confidence** per object,\nand fix any Redshift errors using `references\u002Fteradata\u002Fcommon-errors.md`. The reference docs are the\nsingle source of truth; `conversion-rules.md` includes golden input→output examples to match.\n\n## Execution modes (connectivity)\n\n- **Connected** — your host can reach Teradata\u002FRedshift → run the generated scripts in place.\n- **Disconnected** — it can't → generate a self-contained bundle under `output\u002F\u003Cphase>\u002F`\n  (script + co-located credentials template + relative `result\u002F` + `run-instructions.md`); the\n  operator runs it on a reachable host and copies `result\u002F` back. The copied-back `result\u002F` is\n  the durable state — read it (+ `state.md`) and continue.\n\n## Project-workspace layout (per migration run)\n\n```\n\u003Cproject-workspace>\u002F\n  migration-config.yaml          # operator-authored: endpoints, scope, strategy\n  .gitignore                     # ignores output\u002F\n  output\u002F                        # everything generated (git-ignored)\n    state.md                     # progress cursor\n    discovery\u002F   …  result\u002Finventory.json\n    conversion\u002F  …  result\u002F{ddl,sql,procedures,rsql}\u002F  manual_review.json\n    data_migration\u002F … result\u002F{extract,load,templates}\u002F  migration_manifest.json\n    validation\u002F  …  result\u002Fvalidation_report.json\n    performance\u002F …  result\u002F{perf_baseline,perf_compare}.json\n    reporting\u002F      result\u002Fmigration_report.md\n```\n\n## Security considerations\n\n- **No shipped code or dependencies.** This skill is text-only — the customer runs nothing from\n  it. Any runner the AI generates MUST pin exact dependency versions, validate\u002Fsanitize inputs\n  (file paths, SQL, shell args), and never print or log credentials, secrets, or PII.\n- **Least privilege + ephemeral credentials.** Use a **read-only** Teradata user for discovery. On AWS\n  prefer **IAM roles over IAM users** and **IAM auth over username\u002Fpassword**. Keep secrets in\n  **AWS Secrets Manager \u002F Parameter Store** — never hard-code, echo, or commit them (credentials files\n  are git-ignored; ship only `*.example` templates).\n- **Data in transit \u002F at rest.** Use TLS to both engines; stage extracts in an **encrypted S3\n  bucket** (SSE) with a least-privilege bucket policy; load via `COPY … IAM_ROLE` (not access\n  keys). Enable encryption on the target Redshift cluster.\n- **Blast radius.** Discovery is **read-only** by design. Migration writes to the target —\n  validate against a **throwaway \u002F non-production Redshift** first, and never point a generated\n  write-path at production without explicit operator confirmation.\n- **No secret leakage in artifacts.** Generated `output\u002F…` (manifests, reports, `state.md`) MUST\n  NOT embed credentials or endpoints beyond what the operator supplies in `migration-config.yaml`.\n- **COPY `IAM_ROLE` hardening.** Scope the role's policy to the specific staging prefix (not\n  bucket-wide `s3:*`), and include condition keys in its trust policy (`aws:SourceAccount` \u002F\n  `aws:SourceArn`, or `sts:ExternalId` for cross-account) to prevent confused-deputy assumption —\n  per Redshift IAM-role authorization best practices.\n- **Logging & monitoring.** Enable CloudTrail (S3 data events on the staging bucket + Redshift\n  management events), Redshift audit logging (connection\u002Fuser-activity logs to S3 or CloudWatch),\n  and CloudWatch alarms on COPY failures or unusual staging-bucket access during the migration.\n\nThe AWS MCP server (recommended runtime) additionally provides sandboxed execution and audit\nlogging for the generated scripts.\n\n## References (specialized knowledge)\n\n| File | Topic |\n|------|-------|\n| `references\u002Fteradata\u002Forchestration.md` | phase workflow + state model |\n| `references\u002Fteradata\u002Fconversion-rules.md` | the 72 conversion rules (source of truth) |\n| `references\u002Fteradata\u002Fdata-type-mapping.md` | TD→RS type mapping |\n| `references\u002Fteradata\u002Farchitecture-mapping.md` | PI→DISTKEY, PPI→SORTKEY, Join Index→MV |\n| `references\u002Fteradata\u002Fstored-procedure-migration.md` | SP → PL\u002FpgSQL |\n| `references\u002Fteradata\u002Fbteq-to-rsql.md` | BTEQ → RSQL |\n| `references\u002Fteradata\u002Fcommon-errors.md` | common Redshift errors + fixes |\n| `references\u002Fteradata\u002Fdiscovery-queries.md` | DBC system-view inventory queries |\n| `references\u002Fteradata\u002Fdata-migration-patterns.md` | COPY\u002FTPT\u002Fmicro-batch\u002Fcheckpoint |\n| `references\u002Fteradata\u002Fvalidation-patterns.md` | row-count\u002Faggregate\u002Fsample compare |\n| `references\u002Fteradata\u002Fperformance.md` | representative-query extraction + compare |\n| `references\u002Fteradata\u002Fsizing.md` | RG node type + count from the source profile |\n| `references\u002Fteradata\u002Freporting.md` | migration status-report generation |\n",{"data":36,"body":38},{"name":4,"description":6,"version":37},1,{"type":39,"children":40},"root",[41,49,56,91,103,131,137,165,204,223,229,247,253,483,489,510,659,665,713,719,787,793,805,811,1009,1014,1020],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Migrating to Amazon Redshift",{"type":42,"tag":50,"props":51,"children":53},"h2",{"id":52},"what-this-skill-is",[54],{"type":47,"value":55},"What this skill is",{"type":42,"tag":57,"props":58,"children":59},"p",{},[60,62,68,70,75,77,82,84,89],{"type":47,"value":61},"This skill is ",{"type":42,"tag":63,"props":64,"children":65},"strong",{},[66],{"type":47,"value":67},"AI guidance, not an execution framework",{"type":47,"value":69},". It is ",{"type":42,"tag":63,"props":71,"children":72},{},[73],{"type":47,"value":74},"entirely Markdown\nknowledge",{"type":47,"value":76}," (rules, mappings, patterns, best practices) — ",{"type":42,"tag":63,"props":78,"children":79},{},[80],{"type":47,"value":81},"no executable code",{"type":47,"value":83},". All\nexecution — conversion, the discovery\u002Fmigration\u002Fvalidation runners, dependencies, and\ninfrastructure — ",{"type":42,"tag":63,"props":85,"children":86},{},[87],{"type":47,"value":88},"you (the AI) generate at runtime",{"type":47,"value":90}," from this knowledge, tailored to the\ncustomer's environment.",{"type":42,"tag":57,"props":92,"children":93},{},[94,96,101],{"type":47,"value":95},"Principle: ",{"type":42,"tag":63,"props":97,"children":98},{},[99],{"type":47,"value":100},"knowledge over shipped code → less drift, nothing for the customer to run or\ndepend on, reliable first-time results.",{"type":47,"value":102}," Do not look for a pyproject, a tools package, an\norchestrator engine, or shipped scripts — there are none by design; you generate execution.",{"type":42,"tag":104,"props":105,"children":106},"blockquote",{},[107],{"type":42,"tag":57,"props":108,"children":109},{},[110,115,117,122,124,129],{"type":42,"tag":63,"props":111,"children":112},{},[113],{"type":47,"value":114},"Runtime:",{"type":47,"value":116}," this skill works ",{"type":42,"tag":63,"props":118,"children":119},{},[120],{"type":47,"value":121},"with or without the AWS MCP server",{"type":47,"value":123}," — step guidance uses AWS\nCLI syntax. Running it ",{"type":42,"tag":63,"props":125,"children":126},{},[127],{"type":47,"value":128},"with the AWS MCP server is recommended",{"type":47,"value":130}," for sandboxed execution and\naudit logging; without it, the AI runs the generated scripts on the host shell (assumes Bash,\nPython 3, and AWS CLI + credentials). Do not assume MCP-only tools are available.",{"type":42,"tag":50,"props":132,"children":134},{"id":133},"source-routing",[135],{"type":47,"value":136},"Source routing",{"type":42,"tag":57,"props":138,"children":139},{},[140,142,147,149,154,156,163],{"type":47,"value":141},"This skill migrates a supported ",{"type":42,"tag":63,"props":143,"children":144},{},[145],{"type":47,"value":146},"source data warehouse to Amazon Redshift",{"type":47,"value":148},". First identify the\n",{"type":42,"tag":63,"props":150,"children":151},{},[152],{"type":47,"value":153},"source system",{"type":47,"value":155},", then load that source's knowledge under ",{"type":42,"tag":157,"props":158,"children":160},"code",{"className":159},[],[161],{"type":47,"value":162},"references\u002F\u003Csource>\u002F",{"type":47,"value":164},":",{"type":42,"tag":166,"props":167,"children":168},"ul",{},[169,188],{"type":42,"tag":170,"props":171,"children":172},"li",{},[173,178,180,186],{"type":42,"tag":63,"props":174,"children":175},{},[176],{"type":47,"value":177},"Teradata (Vantage)",{"type":47,"value":179}," → ",{"type":42,"tag":157,"props":181,"children":183},{"className":182},[],[184],{"type":47,"value":185},"references\u002Fteradata\u002F",{"type":47,"value":187}," — supported (all references below).",{"type":42,"tag":170,"props":189,"children":190},{},[191],{"type":42,"tag":192,"props":193,"children":194},"em",{},[195,197,202],{"type":47,"value":196},"Other sources (e.g. Snowflake, Oracle) — unsupported; each is added as its own ",{"type":42,"tag":157,"props":198,"children":200},{"className":199},[],[201],{"type":47,"value":162},{"type":47,"value":203}," set when ready.",{"type":42,"tag":57,"props":205,"children":206},{},[207,209,214,216,221],{"type":47,"value":208},"The ",{"type":42,"tag":63,"props":210,"children":211},{},[212],{"type":47,"value":213},"workflow is source-agnostic",{"type":47,"value":215}," (discovery → convert → migrate → validate → performance →\nreport); only the ",{"type":42,"tag":63,"props":217,"children":218},{},[219],{"type":47,"value":220},"conversion knowledge",{"type":47,"value":222}," is source-specific. Everything below is the Teradata set.",{"type":42,"tag":50,"props":224,"children":226},{"id":225},"when-to-use",[227],{"type":47,"value":228},"When to use",{"type":42,"tag":166,"props":230,"children":231},{},[232,237,242],{"type":42,"tag":170,"props":233,"children":234},{},[235],{"type":47,"value":236},"Migrating a Teradata system (Vantage) to Amazon Redshift.",{"type":42,"tag":170,"props":238,"children":239},{},[240],{"type":47,"value":241},"Converting Teradata DDL, SQL, stored procedures, macros, or BTEQ to Redshift\u002FRSQL.",{"type":42,"tag":170,"props":243,"children":244},{},[245],{"type":47,"value":246},"Assessing Teradata→Redshift migration complexity\u002Feffort.",{"type":42,"tag":50,"props":248,"children":250},{"id":249},"operating-principles",[251],{"type":47,"value":252},"Operating principles",{"type":42,"tag":166,"props":254,"children":255},{},[256,298,331,396,457],{"type":42,"tag":170,"props":257,"children":258},{},[259,264,266,272,274,280,282,288,290,296],{"type":42,"tag":63,"props":260,"children":261},{},[262],{"type":47,"value":263},"Discovery is strictly read-only (SELECT-only) on the source.",{"type":47,"value":265}," Never change production\nstate: no DDL\u002FDML, and never enable logging (",{"type":42,"tag":157,"props":267,"children":269},{"className":268},[],[270],{"type":47,"value":271},"BEGIN\u002FREPLACE QUERY LOGGING",{"type":47,"value":273},"). If DBQL is\nempty, mark it ",{"type":42,"tag":157,"props":275,"children":277},{"className":276},[],[278],{"type":47,"value":279},"unavailable",{"type":47,"value":281}," and fall back to always-on ",{"type":42,"tag":157,"props":283,"children":285},{"className":284},[],[286],{"type":47,"value":287},"DBC.AMPUsageV",{"type":47,"value":289}," — see\n",{"type":42,"tag":157,"props":291,"children":293},{"className":292},[],[294],{"type":47,"value":295},"references\u002Fteradata\u002Fdiscovery-queries.md",{"type":47,"value":297},".",{"type":42,"tag":170,"props":299,"children":300},{},[301,306,308,314,316,322,324,329],{"type":42,"tag":63,"props":302,"children":303},{},[304],{"type":47,"value":305},"Skill provides knowledge; you generate execution.",{"type":47,"value":307}," Read the ",{"type":42,"tag":157,"props":309,"children":311},{"className":310},[],[312],{"type":47,"value":313},"references\u002F",{"type":47,"value":315}," to reason and\nconvert — apply the rules in ",{"type":42,"tag":157,"props":317,"children":319},{"className":318},[],[320],{"type":47,"value":321},"references\u002Fteradata\u002Fconversion-rules.md",{"type":47,"value":323}," directly for conversion, and\ngenerate the discovery\u002Fmigration\u002Fvalidation runners (and the read-only discovery collector\nfrom ",{"type":42,"tag":157,"props":325,"children":327},{"className":326},[],[328],{"type":47,"value":295},{"type":47,"value":330},") tailored to the environment.",{"type":42,"tag":170,"props":332,"children":333},{},[334,339,341,347,349,355,357,363,365,370,372,377,379,384,386,394],{"type":42,"tag":63,"props":335,"children":336},{},[337],{"type":47,"value":338},"Generate, don't assume a framework.",{"type":47,"value":340}," Assume the environment has Bash, Python 3, and AWS\nCLI + credentials. Any Python lib a generated script needs (",{"type":42,"tag":157,"props":342,"children":344},{"className":343},[],[345],{"type":47,"value":346},"teradatasql",{"type":47,"value":348},", ",{"type":42,"tag":157,"props":350,"children":352},{"className":351},[],[353],{"type":47,"value":354},"boto3",{"type":47,"value":356},", …) is\n",{"type":42,"tag":157,"props":358,"children":360},{"className":359},[],[361],{"type":47,"value":362},"pip install",{"type":47,"value":364},"-ed on demand by that script \u002F its run-instructions — pin exact versions.\nTeradata ",{"type":42,"tag":63,"props":366,"children":367},{},[368],{"type":47,"value":369},"TTU",{"type":47,"value":371}," (BTEQ\u002FTPT) is ",{"type":42,"tag":63,"props":373,"children":374},{},[375],{"type":47,"value":376},"Linux\u002FWindows-only — not macOS",{"type":47,"value":378},"; prefer ",{"type":42,"tag":63,"props":380,"children":381},{},[382],{"type":47,"value":383},"WRITE_NOS",{"type":47,"value":385}," +\n",{"type":42,"tag":63,"props":387,"children":388},{},[389],{"type":42,"tag":157,"props":390,"children":392},{"className":391},[],[393],{"type":47,"value":346},{"type":47,"value":395}," (cross-platform, no client) for discovery\u002Fextract unless a TTU\u002FLinux host exists.",{"type":42,"tag":170,"props":397,"children":398},{},[399,404,406,411,413,418,420,425,427,432,434,440,442,447,449,455],{"type":42,"tag":63,"props":400,"children":401},{},[402],{"type":47,"value":403},"Credentials:",{"type":47,"value":405}," use a ",{"type":42,"tag":63,"props":407,"children":408},{},[409],{"type":47,"value":410},"read-only",{"type":47,"value":412}," Teradata user; prefer IAM roles over IAM users. For\n",{"type":42,"tag":63,"props":414,"children":415},{},[416],{"type":47,"value":417},"production",{"type":47,"value":419},", reference credentials from ",{"type":42,"tag":63,"props":421,"children":422},{},[423],{"type":47,"value":424},"AWS Secrets Manager or Systems Manager\nParameter Store",{"type":47,"value":426},". For ",{"type":42,"tag":63,"props":428,"children":429},{},[430],{"type":47,"value":431},"local development only",{"type":47,"value":433},", a git-ignored ",{"type":42,"tag":157,"props":435,"children":437},{"className":436},[],[438],{"type":47,"value":439},".env",{"type":47,"value":441}," file or profile may\nbe used — never commit it. Never hard-code or echo secrets. In a portable\nbundle, reference a ",{"type":42,"tag":63,"props":443,"children":444},{},[445],{"type":47,"value":446},"co-located credentials file",{"type":47,"value":448}," and ship a ",{"type":42,"tag":157,"props":450,"children":452},{"className":451},[],[453],{"type":47,"value":454},"credentials.env.example",{"type":47,"value":456}," template — the\nreal file is git-ignored.",{"type":42,"tag":170,"props":458,"children":459},{},[460,465,467,473,475,481],{"type":42,"tag":63,"props":461,"children":462},{},[463],{"type":47,"value":464},"Persist state in files.",{"type":47,"value":466}," All generated output goes under a git-ignored ",{"type":42,"tag":157,"props":468,"children":470},{"className":469},[],[471],{"type":47,"value":472},"output\u002F",{"type":47,"value":474}," in the\nuser's working dir; keep ",{"type":42,"tag":157,"props":476,"children":478},{"className":477},[],[479],{"type":47,"value":480},"output\u002Fstate.md",{"type":47,"value":482}," current so work is resumable.",{"type":42,"tag":50,"props":484,"children":486},{"id":485},"workflow-phases",[487],{"type":47,"value":488},"Workflow (phases)",{"type":42,"tag":57,"props":490,"children":491},{},[492,494,500,502,508],{"type":47,"value":493},"Run in order; each phase's ",{"type":42,"tag":157,"props":495,"children":497},{"className":496},[],[498],{"type":47,"value":499},"result\u002F",{"type":47,"value":501}," feeds the next (see ",{"type":42,"tag":157,"props":503,"children":505},{"className":504},[],[506],{"type":47,"value":507},"references\u002Fteradata\u002Forchestration.md",{"type":47,"value":509},").",{"type":42,"tag":511,"props":512,"children":513},"ol",{},[514,537,588,604,620,643],{"type":42,"tag":170,"props":515,"children":516},{},[517,522,524,529,531],{"type":42,"tag":63,"props":518,"children":519},{},[520],{"type":47,"value":521},"Discovery",{"type":47,"value":523}," — inventory the source. → ",{"type":42,"tag":157,"props":525,"children":527},{"className":526},[],[528],{"type":47,"value":295},{"type":47,"value":530}," (read-only collection SQL + BTEQ driver template the AI generates) → ",{"type":42,"tag":157,"props":532,"children":534},{"className":533},[],[535],{"type":47,"value":536},"output\u002Fdiscovery\u002Fresult\u002Finventory.json",{"type":42,"tag":170,"props":538,"children":539},{},[540,545,547,552,553,559,561,567,568,574,575,581,582],{"type":42,"tag":63,"props":541,"children":542},{},[543],{"type":47,"value":544},"Conversion",{"type":47,"value":546}," — schema + code. Apply the conversion rules directly, flag the\nmanual-rewrite long tail, and fix Redshift errors from the references. →\n",{"type":42,"tag":157,"props":548,"children":550},{"className":549},[],[551],{"type":47,"value":321},{"type":47,"value":348},{"type":42,"tag":157,"props":554,"children":556},{"className":555},[],[557],{"type":47,"value":558},"references\u002Fteradata\u002Fdata-type-mapping.md",{"type":47,"value":560},",\n",{"type":42,"tag":157,"props":562,"children":564},{"className":563},[],[565],{"type":47,"value":566},"references\u002Fteradata\u002Farchitecture-mapping.md",{"type":47,"value":348},{"type":42,"tag":157,"props":569,"children":571},{"className":570},[],[572],{"type":47,"value":573},"references\u002Fteradata\u002Fstored-procedure-migration.md",{"type":47,"value":560},{"type":42,"tag":157,"props":576,"children":578},{"className":577},[],[579],{"type":47,"value":580},"references\u002Fteradata\u002Fbteq-to-rsql.md",{"type":47,"value":348},{"type":42,"tag":157,"props":583,"children":585},{"className":584},[],[586],{"type":47,"value":587},"references\u002Fteradata\u002Fcommon-errors.md",{"type":42,"tag":170,"props":589,"children":590},{},[591,596,598],{"type":42,"tag":63,"props":592,"children":593},{},[594],{"type":47,"value":595},"Data migration",{"type":47,"value":597}," — extract → S3 → COPY, restartable. → ",{"type":42,"tag":157,"props":599,"children":601},{"className":600},[],[602],{"type":47,"value":603},"references\u002Fteradata\u002Fdata-migration-patterns.md",{"type":42,"tag":170,"props":605,"children":606},{},[607,612,614],{"type":42,"tag":63,"props":608,"children":609},{},[610],{"type":47,"value":611},"Validation",{"type":47,"value":613}," — counts\u002Faggregates\u002Fsampling. → ",{"type":42,"tag":157,"props":615,"children":617},{"className":616},[],[618],{"type":47,"value":619},"references\u002Fteradata\u002Fvalidation-patterns.md",{"type":42,"tag":170,"props":621,"children":622},{},[623,628,630,636,637],{"type":42,"tag":63,"props":624,"children":625},{},[626],{"type":47,"value":627},"Performance",{"type":47,"value":629}," — baseline vs Redshift; size the target. → ",{"type":42,"tag":157,"props":631,"children":633},{"className":632},[],[634],{"type":47,"value":635},"references\u002Fteradata\u002Fperformance.md",{"type":47,"value":348},{"type":42,"tag":157,"props":638,"children":640},{"className":639},[],[641],{"type":47,"value":642},"references\u002Fteradata\u002Fsizing.md",{"type":42,"tag":170,"props":644,"children":645},{},[646,651,653],{"type":42,"tag":63,"props":647,"children":648},{},[649],{"type":47,"value":650},"Reporting",{"type":47,"value":652}," — aggregate all phases. → ",{"type":42,"tag":157,"props":654,"children":656},{"className":655},[],[657],{"type":47,"value":658},"references\u002Fteradata\u002Freporting.md",{"type":42,"tag":50,"props":660,"children":662},{"id":661},"conversion-how-the-ai-applies-it",[663],{"type":47,"value":664},"Conversion (how the AI applies it)",{"type":42,"tag":57,"props":666,"children":667},{},[668,670,682,684,689,691,696,698,703,705,711],{"type":47,"value":669},"There is no converter to run — convert by ",{"type":42,"tag":63,"props":671,"children":672},{},[673,675,680],{"type":47,"value":674},"applying the rules in\n",{"type":42,"tag":157,"props":676,"children":678},{"className":677},[],[679],{"type":47,"value":321},{"type":47,"value":681}," directly",{"type":47,"value":683}," (with the type \u002F architecture \u002F stored-procedure \u002F\nBTEQ references): apply the deterministic rules to the well-understood bulk, ",{"type":42,"tag":63,"props":685,"children":686},{},[687],{"type":47,"value":688},"flag the\nmanual-rewrite constructs",{"type":47,"value":690}," with their suggested rewrites, assign a ",{"type":42,"tag":63,"props":692,"children":693},{},[694],{"type":47,"value":695},"confidence",{"type":47,"value":697}," per object,\nand fix any Redshift errors using ",{"type":42,"tag":157,"props":699,"children":701},{"className":700},[],[702],{"type":47,"value":587},{"type":47,"value":704},". The reference docs are the\nsingle source of truth; ",{"type":42,"tag":157,"props":706,"children":708},{"className":707},[],[709],{"type":47,"value":710},"conversion-rules.md",{"type":47,"value":712}," includes golden input→output examples to match.",{"type":42,"tag":50,"props":714,"children":716},{"id":715},"execution-modes-connectivity",[717],{"type":47,"value":718},"Execution modes (connectivity)",{"type":42,"tag":166,"props":720,"children":721},{},[722,732],{"type":42,"tag":170,"props":723,"children":724},{},[725,730],{"type":42,"tag":63,"props":726,"children":727},{},[728],{"type":47,"value":729},"Connected",{"type":47,"value":731}," — your host can reach Teradata\u002FRedshift → run the generated scripts in place.",{"type":42,"tag":170,"props":733,"children":734},{},[735,740,742,748,750,755,757,763,765,770,772,777,779,785],{"type":42,"tag":63,"props":736,"children":737},{},[738],{"type":47,"value":739},"Disconnected",{"type":47,"value":741}," — it can't → generate a self-contained bundle under ",{"type":42,"tag":157,"props":743,"children":745},{"className":744},[],[746],{"type":47,"value":747},"output\u002F\u003Cphase>\u002F",{"type":47,"value":749},"\n(script + co-located credentials template + relative ",{"type":42,"tag":157,"props":751,"children":753},{"className":752},[],[754],{"type":47,"value":499},{"type":47,"value":756}," + ",{"type":42,"tag":157,"props":758,"children":760},{"className":759},[],[761],{"type":47,"value":762},"run-instructions.md",{"type":47,"value":764},"); the\noperator runs it on a reachable host and copies ",{"type":42,"tag":157,"props":766,"children":768},{"className":767},[],[769],{"type":47,"value":499},{"type":47,"value":771}," back. The copied-back ",{"type":42,"tag":157,"props":773,"children":775},{"className":774},[],[776],{"type":47,"value":499},{"type":47,"value":778}," is\nthe durable state — read it (+ ",{"type":42,"tag":157,"props":780,"children":782},{"className":781},[],[783],{"type":47,"value":784},"state.md",{"type":47,"value":786},") and continue.",{"type":42,"tag":50,"props":788,"children":790},{"id":789},"project-workspace-layout-per-migration-run",[791],{"type":47,"value":792},"Project-workspace layout (per migration run)",{"type":42,"tag":794,"props":795,"children":799},"pre",{"className":796,"code":798,"language":47},[797],"language-text","\u003Cproject-workspace>\u002F\n  migration-config.yaml          # operator-authored: endpoints, scope, strategy\n  .gitignore                     # ignores output\u002F\n  output\u002F                        # everything generated (git-ignored)\n    state.md                     # progress cursor\n    discovery\u002F   …  result\u002Finventory.json\n    conversion\u002F  …  result\u002F{ddl,sql,procedures,rsql}\u002F  manual_review.json\n    data_migration\u002F … result\u002F{extract,load,templates}\u002F  migration_manifest.json\n    validation\u002F  …  result\u002Fvalidation_report.json\n    performance\u002F …  result\u002F{perf_baseline,perf_compare}.json\n    reporting\u002F      result\u002Fmigration_report.md\n",[800],{"type":42,"tag":157,"props":801,"children":803},{"__ignoreMap":802},"",[804],{"type":47,"value":798},{"type":42,"tag":50,"props":806,"children":808},{"id":807},"security-considerations",[809],{"type":47,"value":810},"Security considerations",{"type":42,"tag":166,"props":812,"children":813},{},[814,824,869,894,917,949,999],{"type":42,"tag":170,"props":815,"children":816},{},[817,822],{"type":42,"tag":63,"props":818,"children":819},{},[820],{"type":47,"value":821},"No shipped code or dependencies.",{"type":47,"value":823}," This skill is text-only — the customer runs nothing from\nit. Any runner the AI generates MUST pin exact dependency versions, validate\u002Fsanitize inputs\n(file paths, SQL, shell args), and never print or log credentials, secrets, or PII.",{"type":42,"tag":170,"props":825,"children":826},{},[827,832,834,838,840,845,847,852,854,859,861,867],{"type":42,"tag":63,"props":828,"children":829},{},[830],{"type":47,"value":831},"Least privilege + ephemeral credentials.",{"type":47,"value":833}," Use a ",{"type":42,"tag":63,"props":835,"children":836},{},[837],{"type":47,"value":410},{"type":47,"value":839}," Teradata user for discovery. On AWS\nprefer ",{"type":42,"tag":63,"props":841,"children":842},{},[843],{"type":47,"value":844},"IAM roles over IAM users",{"type":47,"value":846}," and ",{"type":42,"tag":63,"props":848,"children":849},{},[850],{"type":47,"value":851},"IAM auth over username\u002Fpassword",{"type":47,"value":853},". Keep secrets in\n",{"type":42,"tag":63,"props":855,"children":856},{},[857],{"type":47,"value":858},"AWS Secrets Manager \u002F Parameter Store",{"type":47,"value":860}," — never hard-code, echo, or commit them (credentials files\nare git-ignored; ship only ",{"type":42,"tag":157,"props":862,"children":864},{"className":863},[],[865],{"type":47,"value":866},"*.example",{"type":47,"value":868}," templates).",{"type":42,"tag":170,"props":870,"children":871},{},[872,877,879,884,886,892],{"type":42,"tag":63,"props":873,"children":874},{},[875],{"type":47,"value":876},"Data in transit \u002F at rest.",{"type":47,"value":878}," Use TLS to both engines; stage extracts in an ",{"type":42,"tag":63,"props":880,"children":881},{},[882],{"type":47,"value":883},"encrypted S3\nbucket",{"type":47,"value":885}," (SSE) with a least-privilege bucket policy; load via ",{"type":42,"tag":157,"props":887,"children":889},{"className":888},[],[890],{"type":47,"value":891},"COPY … IAM_ROLE",{"type":47,"value":893}," (not access\nkeys). Enable encryption on the target Redshift cluster.",{"type":42,"tag":170,"props":895,"children":896},{},[897,902,904,908,910,915],{"type":42,"tag":63,"props":898,"children":899},{},[900],{"type":47,"value":901},"Blast radius.",{"type":47,"value":903}," Discovery is ",{"type":42,"tag":63,"props":905,"children":906},{},[907],{"type":47,"value":410},{"type":47,"value":909}," by design. Migration writes to the target —\nvalidate against a ",{"type":42,"tag":63,"props":911,"children":912},{},[913],{"type":47,"value":914},"throwaway \u002F non-production Redshift",{"type":47,"value":916}," first, and never point a generated\nwrite-path at production without explicit operator confirmation.",{"type":42,"tag":170,"props":918,"children":919},{},[920,925,927,933,935,940,942,948],{"type":42,"tag":63,"props":921,"children":922},{},[923],{"type":47,"value":924},"No secret leakage in artifacts.",{"type":47,"value":926}," Generated ",{"type":42,"tag":157,"props":928,"children":930},{"className":929},[],[931],{"type":47,"value":932},"output\u002F…",{"type":47,"value":934}," (manifests, reports, ",{"type":42,"tag":157,"props":936,"children":938},{"className":937},[],[939],{"type":47,"value":784},{"type":47,"value":941},") MUST\nNOT embed credentials or endpoints beyond what the operator supplies in ",{"type":42,"tag":157,"props":943,"children":945},{"className":944},[],[946],{"type":47,"value":947},"migration-config.yaml",{"type":47,"value":297},{"type":42,"tag":170,"props":950,"children":951},{},[952,965,967,973,975,981,983,989,991,997],{"type":42,"tag":63,"props":953,"children":954},{},[955,957,963],{"type":47,"value":956},"COPY ",{"type":42,"tag":157,"props":958,"children":960},{"className":959},[],[961],{"type":47,"value":962},"IAM_ROLE",{"type":47,"value":964}," hardening.",{"type":47,"value":966}," Scope the role's policy to the specific staging prefix (not\nbucket-wide ",{"type":42,"tag":157,"props":968,"children":970},{"className":969},[],[971],{"type":47,"value":972},"s3:*",{"type":47,"value":974},"), and include condition keys in its trust policy (",{"type":42,"tag":157,"props":976,"children":978},{"className":977},[],[979],{"type":47,"value":980},"aws:SourceAccount",{"type":47,"value":982}," \u002F\n",{"type":42,"tag":157,"props":984,"children":986},{"className":985},[],[987],{"type":47,"value":988},"aws:SourceArn",{"type":47,"value":990},", or ",{"type":42,"tag":157,"props":992,"children":994},{"className":993},[],[995],{"type":47,"value":996},"sts:ExternalId",{"type":47,"value":998}," for cross-account) to prevent confused-deputy assumption —\nper Redshift IAM-role authorization best practices.",{"type":42,"tag":170,"props":1000,"children":1001},{},[1002,1007],{"type":42,"tag":63,"props":1003,"children":1004},{},[1005],{"type":47,"value":1006},"Logging & monitoring.",{"type":47,"value":1008}," Enable CloudTrail (S3 data events on the staging bucket + Redshift\nmanagement events), Redshift audit logging (connection\u002Fuser-activity logs to S3 or CloudWatch),\nand CloudWatch alarms on COPY failures or unusual staging-bucket access during the migration.",{"type":42,"tag":57,"props":1010,"children":1011},{},[1012],{"type":47,"value":1013},"The AWS MCP server (recommended runtime) additionally provides sandboxed execution and audit\nlogging for the generated scripts.",{"type":42,"tag":50,"props":1015,"children":1017},{"id":1016},"references-specialized-knowledge",[1018],{"type":47,"value":1019},"References (specialized knowledge)",{"type":42,"tag":1021,"props":1022,"children":1023},"table",{},[1024,1043],{"type":42,"tag":1025,"props":1026,"children":1027},"thead",{},[1028],{"type":42,"tag":1029,"props":1030,"children":1031},"tr",{},[1032,1038],{"type":42,"tag":1033,"props":1034,"children":1035},"th",{},[1036],{"type":47,"value":1037},"File",{"type":42,"tag":1033,"props":1039,"children":1040},{},[1041],{"type":47,"value":1042},"Topic",{"type":42,"tag":1044,"props":1045,"children":1046},"tbody",{},[1047,1064,1080,1096,1112,1128,1144,1160,1176,1192,1208,1224,1240],{"type":42,"tag":1029,"props":1048,"children":1049},{},[1050,1059],{"type":42,"tag":1051,"props":1052,"children":1053},"td",{},[1054],{"type":42,"tag":157,"props":1055,"children":1057},{"className":1056},[],[1058],{"type":47,"value":507},{"type":42,"tag":1051,"props":1060,"children":1061},{},[1062],{"type":47,"value":1063},"phase workflow + state model",{"type":42,"tag":1029,"props":1065,"children":1066},{},[1067,1075],{"type":42,"tag":1051,"props":1068,"children":1069},{},[1070],{"type":42,"tag":157,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":47,"value":321},{"type":42,"tag":1051,"props":1076,"children":1077},{},[1078],{"type":47,"value":1079},"the 72 conversion rules (source of truth)",{"type":42,"tag":1029,"props":1081,"children":1082},{},[1083,1091],{"type":42,"tag":1051,"props":1084,"children":1085},{},[1086],{"type":42,"tag":157,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":47,"value":558},{"type":42,"tag":1051,"props":1092,"children":1093},{},[1094],{"type":47,"value":1095},"TD→RS type mapping",{"type":42,"tag":1029,"props":1097,"children":1098},{},[1099,1107],{"type":42,"tag":1051,"props":1100,"children":1101},{},[1102],{"type":42,"tag":157,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":47,"value":566},{"type":42,"tag":1051,"props":1108,"children":1109},{},[1110],{"type":47,"value":1111},"PI→DISTKEY, PPI→SORTKEY, Join Index→MV",{"type":42,"tag":1029,"props":1113,"children":1114},{},[1115,1123],{"type":42,"tag":1051,"props":1116,"children":1117},{},[1118],{"type":42,"tag":157,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":47,"value":573},{"type":42,"tag":1051,"props":1124,"children":1125},{},[1126],{"type":47,"value":1127},"SP → PL\u002FpgSQL",{"type":42,"tag":1029,"props":1129,"children":1130},{},[1131,1139],{"type":42,"tag":1051,"props":1132,"children":1133},{},[1134],{"type":42,"tag":157,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":47,"value":580},{"type":42,"tag":1051,"props":1140,"children":1141},{},[1142],{"type":47,"value":1143},"BTEQ → RSQL",{"type":42,"tag":1029,"props":1145,"children":1146},{},[1147,1155],{"type":42,"tag":1051,"props":1148,"children":1149},{},[1150],{"type":42,"tag":157,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":47,"value":587},{"type":42,"tag":1051,"props":1156,"children":1157},{},[1158],{"type":47,"value":1159},"common Redshift errors + fixes",{"type":42,"tag":1029,"props":1161,"children":1162},{},[1163,1171],{"type":42,"tag":1051,"props":1164,"children":1165},{},[1166],{"type":42,"tag":157,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":47,"value":295},{"type":42,"tag":1051,"props":1172,"children":1173},{},[1174],{"type":47,"value":1175},"DBC system-view inventory queries",{"type":42,"tag":1029,"props":1177,"children":1178},{},[1179,1187],{"type":42,"tag":1051,"props":1180,"children":1181},{},[1182],{"type":42,"tag":157,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":47,"value":603},{"type":42,"tag":1051,"props":1188,"children":1189},{},[1190],{"type":47,"value":1191},"COPY\u002FTPT\u002Fmicro-batch\u002Fcheckpoint",{"type":42,"tag":1029,"props":1193,"children":1194},{},[1195,1203],{"type":42,"tag":1051,"props":1196,"children":1197},{},[1198],{"type":42,"tag":157,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":47,"value":619},{"type":42,"tag":1051,"props":1204,"children":1205},{},[1206],{"type":47,"value":1207},"row-count\u002Faggregate\u002Fsample compare",{"type":42,"tag":1029,"props":1209,"children":1210},{},[1211,1219],{"type":42,"tag":1051,"props":1212,"children":1213},{},[1214],{"type":42,"tag":157,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":47,"value":635},{"type":42,"tag":1051,"props":1220,"children":1221},{},[1222],{"type":47,"value":1223},"representative-query extraction + compare",{"type":42,"tag":1029,"props":1225,"children":1226},{},[1227,1235],{"type":42,"tag":1051,"props":1228,"children":1229},{},[1230],{"type":42,"tag":157,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":47,"value":642},{"type":42,"tag":1051,"props":1236,"children":1237},{},[1238],{"type":47,"value":1239},"RG node type + count from the source profile",{"type":42,"tag":1029,"props":1241,"children":1242},{},[1243,1251],{"type":42,"tag":1051,"props":1244,"children":1245},{},[1246],{"type":42,"tag":157,"props":1247,"children":1249},{"className":1248},[],[1250],{"type":47,"value":658},{"type":42,"tag":1051,"props":1252,"children":1253},{},[1254],{"type":47,"value":1255},"migration status-report generation",{"items":1257,"total":1360},[1258,1275,1290,1305,1320,1330,1345],{"slug":1259,"name":1259,"fn":1260,"description":1261,"org":1262,"tags":1263,"stars":24,"repoUrl":25,"updatedAt":1274},"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},[1264,1267,1270,1271],{"name":1265,"slug":1266,"type":15},"Agents","agents",{"name":1268,"slug":1269,"type":15},"Automation","automation",{"name":23,"slug":8,"type":15},{"name":1272,"slug":1273,"type":15},"Engineering","engineering","2026-07-12T08:42:53.812877",{"slug":1276,"name":1276,"fn":1277,"description":1278,"org":1279,"tags":1280,"stars":24,"repoUrl":25,"updatedAt":1289},"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},[1281,1282,1285,1288],{"name":1265,"slug":1266,"type":15},{"name":1283,"slug":1284,"type":15},"API Development","api-development",{"name":1286,"slug":1287,"type":15},"Authentication","authentication",{"name":23,"slug":8,"type":15},"2026-07-16T06:00:38.866147",{"slug":1291,"name":1291,"fn":1292,"description":1293,"org":1294,"tags":1295,"stars":24,"repoUrl":25,"updatedAt":1304},"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},[1296,1297,1298,1301],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1299,"slug":1300,"type":15},"Debugging","debugging",{"name":1302,"slug":1303,"type":15},"Observability","observability","2026-07-16T06:00:44.679093",{"slug":1306,"name":1306,"fn":1307,"description":1308,"org":1309,"tags":1310,"stars":24,"repoUrl":25,"updatedAt":1319},"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},[1311,1312,1313,1316],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1314,"slug":1315,"type":15},"CI\u002FCD","ci-cd",{"name":1317,"slug":1318,"type":15},"Deployment","deployment","2026-07-12T08:42:55.059577",{"slug":1321,"name":1321,"fn":1322,"description":1323,"org":1324,"tags":1325,"stars":24,"repoUrl":25,"updatedAt":1329},"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},[1326,1327,1328],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1317,"slug":1318,"type":15},"2026-07-12T08:42:51.963247",{"slug":1331,"name":1331,"fn":1332,"description":1333,"org":1334,"tags":1335,"stars":24,"repoUrl":25,"updatedAt":1344},"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},[1336,1337,1338,1341],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1339,"slug":1340,"type":15},"Best Practices","best-practices",{"name":1342,"slug":1343,"type":15},"Security","security","2026-07-16T06:00:42.174705",{"slug":1346,"name":1346,"fn":1347,"description":1348,"org":1349,"tags":1350,"stars":24,"repoUrl":25,"updatedAt":1359},"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},[1351,1352,1353,1356,1357],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1354,"slug":1355,"type":15},"Evals","evals",{"name":1302,"slug":1303,"type":15},{"name":627,"slug":1358,"type":15},"performance","2026-07-12T08:42:56.488105",114,{"items":1362,"total":1479},[1363,1370,1377,1384,1391,1397,1404,1412,1429,1442,1454,1469],{"slug":1259,"name":1259,"fn":1260,"description":1261,"org":1364,"tags":1365,"stars":24,"repoUrl":25,"updatedAt":1274},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1366,1367,1368,1369],{"name":1265,"slug":1266,"type":15},{"name":1268,"slug":1269,"type":15},{"name":23,"slug":8,"type":15},{"name":1272,"slug":1273,"type":15},{"slug":1276,"name":1276,"fn":1277,"description":1278,"org":1371,"tags":1372,"stars":24,"repoUrl":25,"updatedAt":1289},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1373,1374,1375,1376],{"name":1265,"slug":1266,"type":15},{"name":1283,"slug":1284,"type":15},{"name":1286,"slug":1287,"type":15},{"name":23,"slug":8,"type":15},{"slug":1291,"name":1291,"fn":1292,"description":1293,"org":1378,"tags":1379,"stars":24,"repoUrl":25,"updatedAt":1304},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1380,1381,1382,1383],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1299,"slug":1300,"type":15},{"name":1302,"slug":1303,"type":15},{"slug":1306,"name":1306,"fn":1307,"description":1308,"org":1385,"tags":1386,"stars":24,"repoUrl":25,"updatedAt":1319},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1387,1388,1389,1390],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1314,"slug":1315,"type":15},{"name":1317,"slug":1318,"type":15},{"slug":1321,"name":1321,"fn":1322,"description":1323,"org":1392,"tags":1393,"stars":24,"repoUrl":25,"updatedAt":1329},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1394,1395,1396],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1317,"slug":1318,"type":15},{"slug":1331,"name":1331,"fn":1332,"description":1333,"org":1398,"tags":1399,"stars":24,"repoUrl":25,"updatedAt":1344},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1400,1401,1402,1403],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1339,"slug":1340,"type":15},{"name":1342,"slug":1343,"type":15},{"slug":1346,"name":1346,"fn":1347,"description":1348,"org":1405,"tags":1406,"stars":24,"repoUrl":25,"updatedAt":1359},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1407,1408,1409,1410,1411],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1354,"slug":1355,"type":15},{"name":1302,"slug":1303,"type":15},{"name":627,"slug":1358,"type":15},{"slug":1413,"name":1413,"fn":1414,"description":1415,"org":1416,"tags":1417,"stars":24,"repoUrl":25,"updatedAt":1428},"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},[1418,1419,1422,1425],{"name":23,"slug":8,"type":15},{"name":1420,"slug":1421,"type":15},"Database","database",{"name":1423,"slug":1424,"type":15},"MySQL","mysql",{"name":1426,"slug":1427,"type":15},"Serverless","serverless","2026-07-12T08:43:13.27939",{"slug":1430,"name":1430,"fn":1431,"description":1432,"org":1433,"tags":1434,"stars":24,"repoUrl":25,"updatedAt":1441},"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},[1435,1436,1437,1440],{"name":23,"slug":8,"type":15},{"name":1420,"slug":1421,"type":15},{"name":1438,"slug":1439,"type":15},"PostgreSQL","postgresql",{"name":1426,"slug":1427,"type":15},"2026-07-16T06:00:34.789624",{"slug":1443,"name":1443,"fn":1444,"description":1445,"org":1446,"tags":1447,"stars":24,"repoUrl":25,"updatedAt":1453},"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},[1448,1449,1450],{"name":1265,"slug":1266,"type":15},{"name":23,"slug":8,"type":15},{"name":1451,"slug":1452,"type":15},"LLM","llm","2026-07-25T05:30:35.20899",{"slug":1455,"name":1455,"fn":1456,"description":1457,"org":1458,"tags":1459,"stars":24,"repoUrl":25,"updatedAt":1468},"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},[1460,1461,1462,1465],{"name":23,"slug":8,"type":15},{"name":1420,"slug":1421,"type":15},{"name":1463,"slug":1464,"type":15},"MongoDB","mongodb",{"name":1466,"slug":1467,"type":15},"NoSQL","nosql","2026-07-12T08:43:00.455878",{"slug":1470,"name":1470,"fn":1471,"description":1472,"org":1473,"tags":1474,"stars":24,"repoUrl":25,"updatedAt":1478},"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},[1475,1476,1477],{"name":23,"slug":8,"type":15},{"name":1420,"slug":1421,"type":15},{"name":1466,"slug":1467,"type":15},"2026-07-16T06:00:37.690386",115]