[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-aws-labs-iam-policy-validator":3,"mdc--rgn6ds-key":40,"related-repo-aws-labs-iam-policy-validator":597,"related-org-aws-labs-iam-policy-validator":606},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":35,"sourceUrl":38,"mdContent":39},"iam-policy-validator","validate AWS IAM policies in CloudFormation templates","Validate the IAM policies in a CloudFormation template against AWS IAM Access Analyzer before deploying, using the cfn-policy-validator CLI. Use when reviewing or gating a CloudFormation (or CDK-synthesized) template that defines IAM identity or resource policies, when asked to check a template for policy errors, public access, privilege escalation, or whether a change grants access beyond an approved baseline.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"aws-labs","AWS Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Faws-labs.png","awslabs",[13,17,20,23],{"name":14,"slug":15,"type":16},"Security","security","tag",{"name":18,"slug":19,"type":16},"Compliance","compliance",{"name":21,"slug":22,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":24,"slug":25,"type":16},"AWS","aws",146,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Faws-cloudformation-iam-policy-validator","2026-07-12T08:37:13.052325","MIT-0",25,[25,32,33,34],"aws-iam","aws-iam-policies","cloudformation",{"repoUrl":27,"stars":26,"forks":30,"topics":36,"description":37},[25,32,33,34],null,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Faws-cloudformation-iam-policy-validator\u002Ftree\u002FHEAD\u002Fskills\u002Fiam-policy-validator","---\nname: iam-policy-validator\ndescription: Validate the IAM policies in a CloudFormation template against AWS IAM Access Analyzer before deploying, using the cfn-policy-validator CLI. Use when reviewing or gating a CloudFormation (or CDK-synthesized) template that defines IAM identity or resource policies, when asked to check a template for policy errors, public access, privilege escalation, or whether a change grants access beyond an approved baseline.\nlicense: MIT-0\nmetadata:\n  author: awslabs\u002Faws-cloudformation-iam-policy-validator\n  version: 1.0.0\n---\n\n# IAM policy validator for AWS CloudFormation\n\nUse the `cfn-policy-validator` CLI to validate the IAM policies in a\nCloudFormation template against AWS IAM Access Analyzer before deploying. The\ntool extracts identity- and resource-based policies from the template, resolves\nintrinsic functions and pseudo parameters, and runs them through Access\nAnalyzer. Install with `pip install cfn-policy-validator`.\n\nDiscover the exact commands and flags by running `cfn-policy-validator --help`\nand `cfn-policy-validator \u003Ccommand> --help`.\n\n## When to use which command\n\n- `validate` — general \"review these policies\": correctness and best-practice\n  findings. The default for an open-ended review request.\n- `check-no-new-access` — confirm a policy grants nothing beyond an approved\n  reference policy.\n- `check-access-not-granted` — confirm specific actions or resources are not\n  granted.\n- `check-no-public-access` — confirm a resource policy cannot grant public\n  access. Applies to resource policies only; a template with none has nothing\n  for it to evaluate.\n- `parse` — print the resolved policies without calling Access Analyzer. Use to\n  troubleshoot what the tool extracted and how intrinsics were evaluated.\n\n## Preparing input\n\n- Raw CloudFormation: pass the template directly; the tool resolves\n  `!Ref`\u002F`!Sub`\u002F`!GetAtt` itself.\n- CDK: run `cdk synth` first and pass a `cdk.out\u002F*.template.json`. Do not\n  synthesize implicitly; that is the user's step.\n- When a policy depends on template parameters, supply them (`--parameters` or a\n  template-configuration file) so the policy resolves.\n\n## Reading the result\n\nEach check returns JSON with `BlockingFindings` and `NonBlockingFindings` and\nexits `2` when any blocking finding is present, `0` otherwise. Report blocking\nfindings first. In CI, gate on the exit code.\n\n## Example\n\nReviewing a template before deploy:\n\n```\ncfn-policy-validator validate --template-path .\u002Ftemplate.yaml\n```\n\nA problem policy produces a `BlockingFindings` entry and exit code `2`:\n\n```json\n{\n  \"BlockingFindings\": [\n    {\"findingType\": \"ERROR\", \"code\": \"INVALID_ACTION\", \"resourceName\": \"MyRole\"}\n  ],\n  \"NonBlockingFindings\": []\n}\n```\n\nA clean template returns empty findings and exit code `0`.\n\n## Credentials\n\nThe checks call Access Analyzer (including access previews), so they need AWS\ncredentials and a region (`--region`, else `AWS_REGION` \u002F `AWS_DEFAULT_REGION`).\nAn `AccessDenied` error names the missing Access Analyzer or IAM permission —\ngrant it and retry. The full required policy is in the project README:\nhttps:\u002F\u002Fgithub.com\u002Fawslabs\u002Faws-cloudformation-iam-policy-validator#iam-policy-required-to-run-the-iam-policy-validator-for-aws-cloudformation\n",{"data":41,"body":45},{"name":4,"description":6,"license":29,"metadata":42},{"author":43,"version":44},"awslabs\u002Faws-cloudformation-iam-policy-validator","1.0.0",{"type":46,"children":47},"root",[48,57,80,100,107,167,173,238,244,281,287,292,304,323,529,540,546,591],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"iam-policy-validator-for-aws-cloudformation",[54],{"type":55,"value":56},"text","IAM policy validator for AWS CloudFormation",{"type":49,"tag":58,"props":59,"children":60},"p",{},[61,63,70,72,78],{"type":55,"value":62},"Use the ",{"type":49,"tag":64,"props":65,"children":67},"code",{"className":66},[],[68],{"type":55,"value":69},"cfn-policy-validator",{"type":55,"value":71}," CLI to validate the IAM policies in a\nCloudFormation template against AWS IAM Access Analyzer before deploying. The\ntool extracts identity- and resource-based policies from the template, resolves\nintrinsic functions and pseudo parameters, and runs them through Access\nAnalyzer. Install with ",{"type":49,"tag":64,"props":73,"children":75},{"className":74},[],[76],{"type":55,"value":77},"pip install cfn-policy-validator",{"type":55,"value":79},".",{"type":49,"tag":58,"props":81,"children":82},{},[83,85,91,93,99],{"type":55,"value":84},"Discover the exact commands and flags by running ",{"type":49,"tag":64,"props":86,"children":88},{"className":87},[],[89],{"type":55,"value":90},"cfn-policy-validator --help",{"type":55,"value":92},"\nand ",{"type":49,"tag":64,"props":94,"children":96},{"className":95},[],[97],{"type":55,"value":98},"cfn-policy-validator \u003Ccommand> --help",{"type":55,"value":79},{"type":49,"tag":101,"props":102,"children":104},"h2",{"id":103},"when-to-use-which-command",[105],{"type":55,"value":106},"When to use which command",{"type":49,"tag":108,"props":109,"children":110},"ul",{},[111,123,134,145,156],{"type":49,"tag":112,"props":113,"children":114},"li",{},[115,121],{"type":49,"tag":64,"props":116,"children":118},{"className":117},[],[119],{"type":55,"value":120},"validate",{"type":55,"value":122}," — general \"review these policies\": correctness and best-practice\nfindings. The default for an open-ended review request.",{"type":49,"tag":112,"props":124,"children":125},{},[126,132],{"type":49,"tag":64,"props":127,"children":129},{"className":128},[],[130],{"type":55,"value":131},"check-no-new-access",{"type":55,"value":133}," — confirm a policy grants nothing beyond an approved\nreference policy.",{"type":49,"tag":112,"props":135,"children":136},{},[137,143],{"type":49,"tag":64,"props":138,"children":140},{"className":139},[],[141],{"type":55,"value":142},"check-access-not-granted",{"type":55,"value":144}," — confirm specific actions or resources are not\ngranted.",{"type":49,"tag":112,"props":146,"children":147},{},[148,154],{"type":49,"tag":64,"props":149,"children":151},{"className":150},[],[152],{"type":55,"value":153},"check-no-public-access",{"type":55,"value":155}," — confirm a resource policy cannot grant public\naccess. Applies to resource policies only; a template with none has nothing\nfor it to evaluate.",{"type":49,"tag":112,"props":157,"children":158},{},[159,165],{"type":49,"tag":64,"props":160,"children":162},{"className":161},[],[163],{"type":55,"value":164},"parse",{"type":55,"value":166}," — print the resolved policies without calling Access Analyzer. Use to\ntroubleshoot what the tool extracted and how intrinsics were evaluated.",{"type":49,"tag":101,"props":168,"children":170},{"id":169},"preparing-input",[171],{"type":55,"value":172},"Preparing input",{"type":49,"tag":108,"props":174,"children":175},{},[176,204,225],{"type":49,"tag":112,"props":177,"children":178},{},[179,181,187,189,195,196,202],{"type":55,"value":180},"Raw CloudFormation: pass the template directly; the tool resolves\n",{"type":49,"tag":64,"props":182,"children":184},{"className":183},[],[185],{"type":55,"value":186},"!Ref",{"type":55,"value":188},"\u002F",{"type":49,"tag":64,"props":190,"children":192},{"className":191},[],[193],{"type":55,"value":194},"!Sub",{"type":55,"value":188},{"type":49,"tag":64,"props":197,"children":199},{"className":198},[],[200],{"type":55,"value":201},"!GetAtt",{"type":55,"value":203}," itself.",{"type":49,"tag":112,"props":205,"children":206},{},[207,209,215,217,223],{"type":55,"value":208},"CDK: run ",{"type":49,"tag":64,"props":210,"children":212},{"className":211},[],[213],{"type":55,"value":214},"cdk synth",{"type":55,"value":216}," first and pass a ",{"type":49,"tag":64,"props":218,"children":220},{"className":219},[],[221],{"type":55,"value":222},"cdk.out\u002F*.template.json",{"type":55,"value":224},". Do not\nsynthesize implicitly; that is the user's step.",{"type":49,"tag":112,"props":226,"children":227},{},[228,230,236],{"type":55,"value":229},"When a policy depends on template parameters, supply them (",{"type":49,"tag":64,"props":231,"children":233},{"className":232},[],[234],{"type":55,"value":235},"--parameters",{"type":55,"value":237}," or a\ntemplate-configuration file) so the policy resolves.",{"type":49,"tag":101,"props":239,"children":241},{"id":240},"reading-the-result",[242],{"type":55,"value":243},"Reading the result",{"type":49,"tag":58,"props":245,"children":246},{},[247,249,255,257,263,265,271,273,279],{"type":55,"value":248},"Each check returns JSON with ",{"type":49,"tag":64,"props":250,"children":252},{"className":251},[],[253],{"type":55,"value":254},"BlockingFindings",{"type":55,"value":256}," and ",{"type":49,"tag":64,"props":258,"children":260},{"className":259},[],[261],{"type":55,"value":262},"NonBlockingFindings",{"type":55,"value":264}," and\nexits ",{"type":49,"tag":64,"props":266,"children":268},{"className":267},[],[269],{"type":55,"value":270},"2",{"type":55,"value":272}," when any blocking finding is present, ",{"type":49,"tag":64,"props":274,"children":276},{"className":275},[],[277],{"type":55,"value":278},"0",{"type":55,"value":280}," otherwise. Report blocking\nfindings first. In CI, gate on the exit code.",{"type":49,"tag":101,"props":282,"children":284},{"id":283},"example",[285],{"type":55,"value":286},"Example",{"type":49,"tag":58,"props":288,"children":289},{},[290],{"type":55,"value":291},"Reviewing a template before deploy:",{"type":49,"tag":293,"props":294,"children":298},"pre",{"className":295,"code":297,"language":55},[296],"language-text","cfn-policy-validator validate --template-path .\u002Ftemplate.yaml\n",[299],{"type":49,"tag":64,"props":300,"children":302},{"__ignoreMap":301},"",[303],{"type":55,"value":297},{"type":49,"tag":58,"props":305,"children":306},{},[307,309,314,316,321],{"type":55,"value":308},"A problem policy produces a ",{"type":49,"tag":64,"props":310,"children":312},{"className":311},[],[313],{"type":55,"value":254},{"type":55,"value":315}," entry and exit code ",{"type":49,"tag":64,"props":317,"children":319},{"className":318},[],[320],{"type":55,"value":270},{"type":55,"value":322},":",{"type":49,"tag":293,"props":324,"children":328},{"className":325,"code":326,"language":327,"meta":301,"style":301},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"BlockingFindings\": [\n    {\"findingType\": \"ERROR\", \"code\": \"INVALID_ACTION\", \"resourceName\": \"MyRole\"}\n  ],\n  \"NonBlockingFindings\": []\n}\n","json",[329],{"type":49,"tag":64,"props":330,"children":331},{"__ignoreMap":301},[332,344,372,487,496,521],{"type":49,"tag":333,"props":334,"children":337},"span",{"class":335,"line":336},"line",1,[338],{"type":49,"tag":333,"props":339,"children":341},{"style":340},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[342],{"type":55,"value":343},"{\n",{"type":49,"tag":333,"props":345,"children":347},{"class":335,"line":346},2,[348,353,358,363,367],{"type":49,"tag":333,"props":349,"children":350},{"style":340},[351],{"type":55,"value":352},"  \"",{"type":49,"tag":333,"props":354,"children":356},{"style":355},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[357],{"type":55,"value":254},{"type":49,"tag":333,"props":359,"children":360},{"style":340},[361],{"type":55,"value":362},"\"",{"type":49,"tag":333,"props":364,"children":365},{"style":340},[366],{"type":55,"value":322},{"type":49,"tag":333,"props":368,"children":369},{"style":340},[370],{"type":55,"value":371}," [\n",{"type":49,"tag":333,"props":373,"children":375},{"class":335,"line":374},3,[376,381,385,391,395,399,404,410,414,419,423,427,431,435,439,444,448,452,456,461,465,469,473,478,482],{"type":49,"tag":333,"props":377,"children":378},{"style":340},[379],{"type":55,"value":380},"    {",{"type":49,"tag":333,"props":382,"children":383},{"style":340},[384],{"type":55,"value":362},{"type":49,"tag":333,"props":386,"children":388},{"style":387},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[389],{"type":55,"value":390},"findingType",{"type":49,"tag":333,"props":392,"children":393},{"style":340},[394],{"type":55,"value":362},{"type":49,"tag":333,"props":396,"children":397},{"style":340},[398],{"type":55,"value":322},{"type":49,"tag":333,"props":400,"children":401},{"style":340},[402],{"type":55,"value":403}," \"",{"type":49,"tag":333,"props":405,"children":407},{"style":406},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[408],{"type":55,"value":409},"ERROR",{"type":49,"tag":333,"props":411,"children":412},{"style":340},[413],{"type":55,"value":362},{"type":49,"tag":333,"props":415,"children":416},{"style":340},[417],{"type":55,"value":418},",",{"type":49,"tag":333,"props":420,"children":421},{"style":340},[422],{"type":55,"value":403},{"type":49,"tag":333,"props":424,"children":425},{"style":387},[426],{"type":55,"value":64},{"type":49,"tag":333,"props":428,"children":429},{"style":340},[430],{"type":55,"value":362},{"type":49,"tag":333,"props":432,"children":433},{"style":340},[434],{"type":55,"value":322},{"type":49,"tag":333,"props":436,"children":437},{"style":340},[438],{"type":55,"value":403},{"type":49,"tag":333,"props":440,"children":441},{"style":406},[442],{"type":55,"value":443},"INVALID_ACTION",{"type":49,"tag":333,"props":445,"children":446},{"style":340},[447],{"type":55,"value":362},{"type":49,"tag":333,"props":449,"children":450},{"style":340},[451],{"type":55,"value":418},{"type":49,"tag":333,"props":453,"children":454},{"style":340},[455],{"type":55,"value":403},{"type":49,"tag":333,"props":457,"children":458},{"style":387},[459],{"type":55,"value":460},"resourceName",{"type":49,"tag":333,"props":462,"children":463},{"style":340},[464],{"type":55,"value":362},{"type":49,"tag":333,"props":466,"children":467},{"style":340},[468],{"type":55,"value":322},{"type":49,"tag":333,"props":470,"children":471},{"style":340},[472],{"type":55,"value":403},{"type":49,"tag":333,"props":474,"children":475},{"style":406},[476],{"type":55,"value":477},"MyRole",{"type":49,"tag":333,"props":479,"children":480},{"style":340},[481],{"type":55,"value":362},{"type":49,"tag":333,"props":483,"children":484},{"style":340},[485],{"type":55,"value":486},"}\n",{"type":49,"tag":333,"props":488,"children":490},{"class":335,"line":489},4,[491],{"type":49,"tag":333,"props":492,"children":493},{"style":340},[494],{"type":55,"value":495},"  ],\n",{"type":49,"tag":333,"props":497,"children":499},{"class":335,"line":498},5,[500,504,508,512,516],{"type":49,"tag":333,"props":501,"children":502},{"style":340},[503],{"type":55,"value":352},{"type":49,"tag":333,"props":505,"children":506},{"style":355},[507],{"type":55,"value":262},{"type":49,"tag":333,"props":509,"children":510},{"style":340},[511],{"type":55,"value":362},{"type":49,"tag":333,"props":513,"children":514},{"style":340},[515],{"type":55,"value":322},{"type":49,"tag":333,"props":517,"children":518},{"style":340},[519],{"type":55,"value":520}," []\n",{"type":49,"tag":333,"props":522,"children":524},{"class":335,"line":523},6,[525],{"type":49,"tag":333,"props":526,"children":527},{"style":340},[528],{"type":55,"value":486},{"type":49,"tag":58,"props":530,"children":531},{},[532,534,539],{"type":55,"value":533},"A clean template returns empty findings and exit code ",{"type":49,"tag":64,"props":535,"children":537},{"className":536},[],[538],{"type":55,"value":278},{"type":55,"value":79},{"type":49,"tag":101,"props":541,"children":543},{"id":542},"credentials",[544],{"type":55,"value":545},"Credentials",{"type":49,"tag":58,"props":547,"children":548},{},[549,551,557,559,565,567,573,575,581,583],{"type":55,"value":550},"The checks call Access Analyzer (including access previews), so they need AWS\ncredentials and a region (",{"type":49,"tag":64,"props":552,"children":554},{"className":553},[],[555],{"type":55,"value":556},"--region",{"type":55,"value":558},", else ",{"type":49,"tag":64,"props":560,"children":562},{"className":561},[],[563],{"type":55,"value":564},"AWS_REGION",{"type":55,"value":566}," \u002F ",{"type":49,"tag":64,"props":568,"children":570},{"className":569},[],[571],{"type":55,"value":572},"AWS_DEFAULT_REGION",{"type":55,"value":574},").\nAn ",{"type":49,"tag":64,"props":576,"children":578},{"className":577},[],[579],{"type":55,"value":580},"AccessDenied",{"type":55,"value":582}," error names the missing Access Analyzer or IAM permission —\ngrant it and retry. The full required policy is in the project README:\n",{"type":49,"tag":584,"props":585,"children":589},"a",{"href":586,"rel":587},"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Faws-cloudformation-iam-policy-validator#iam-policy-required-to-run-the-iam-policy-validator-for-aws-cloudformation",[588],"nofollow",[590],{"type":55,"value":586},{"type":49,"tag":592,"props":593,"children":594},"style",{},[595],{"type":55,"value":596},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":598,"total":336},[599],{"slug":4,"name":4,"fn":5,"description":6,"org":600,"tags":601,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[602,603,604,605],{"name":24,"slug":25,"type":16},{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"items":607,"total":785},[608,627,648,658,671,684,694,704,725,740,755,770],{"slug":609,"name":609,"fn":610,"description":611,"org":612,"tags":613,"stars":624,"repoUrl":625,"updatedAt":626},"agentcore-investigation","investigate Bedrock AgentCore runtime sessions","Investigate Bedrock AgentCore runtime sessions via CloudWatch Logs Insights — resolve session\u002Ftrace IDs, query OTEL spans, filter noise, build timelines. Use when debugging AgentCore agent sessions, tracing tool calls, or analyzing latency.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[614,615,618,621],{"name":24,"slug":25,"type":16},{"name":616,"slug":617,"type":16},"Debugging","debugging",{"name":619,"slug":620,"type":16},"Logs","logs",{"name":622,"slug":623,"type":16},"Observability","observability",9427,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fmcp","2026-07-12T08:37:22.601527",{"slug":628,"name":629,"fn":630,"description":631,"org":632,"tags":633,"stars":624,"repoUrl":625,"updatedAt":647},"amazon-aurora-dsql","amazon aurora dsql","build applications with Aurora DSQL","Build with Aurora DSQL — manage schemas, execute queries, handle migrations, diagnose query plans, load data, and develop applications with a serverless, distributed SQL database. Covers IAM auth, multi-tenant patterns, MySQL-to-DSQL and PostgreSQL-to-DSQL schema conversion, FK replacement code generation, OCC retry patterns, ORM migration (Django\u002FHibernate\u002FRails), DDL operations, query plan explainability, SQL compatibility validation, and bulk data loading. Triggers on phrases like: DSQL, Aurora DSQL, create DSQL table, DSQL schema, migrate to DSQL, distributed SQL database, serverless PostgreSQL-compatible database, DSQL query plan, DSQL EXPLAIN ANALYZE, why is my DSQL query slow, DSQL foreign key, DSQL OCC retry, DSQL multi-region, load into DSQL, load CSV into DSQL, bulk load DSQL, aurora-dsql-loader.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[634,637,638,641,644],{"name":635,"slug":636,"type":16},"Aurora","aurora",{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},"Database","database",{"name":642,"slug":643,"type":16},"Serverless","serverless",{"name":645,"slug":646,"type":16},"SQL","sql","2026-07-12T08:36:45.053393",{"slug":649,"name":650,"fn":630,"description":631,"org":651,"tags":652,"stars":624,"repoUrl":625,"updatedAt":657},"aurora-dsql","aurora dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[653,654,655,656],{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},{"name":642,"slug":643,"type":16},{"name":645,"slug":646,"type":16},"2026-07-12T08:36:42.694299",{"slug":659,"name":660,"fn":630,"description":631,"org":661,"tags":662,"stars":624,"repoUrl":625,"updatedAt":670},"aws-dsql","aws dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[663,664,665,668,669],{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},{"name":666,"slug":667,"type":16},"Migration","migration",{"name":642,"slug":643,"type":16},{"name":645,"slug":646,"type":16},"2026-07-12T08:36:38.584057",{"slug":672,"name":673,"fn":630,"description":631,"org":674,"tags":675,"stars":624,"repoUrl":625,"updatedAt":683},"distributed-postgres","distributed postgres",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[676,677,678,681,682],{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},{"name":679,"slug":680,"type":16},"PostgreSQL","postgresql",{"name":642,"slug":643,"type":16},{"name":645,"slug":646,"type":16},"2026-07-12T08:36:46.530743",{"slug":685,"name":686,"fn":630,"description":631,"org":687,"tags":688,"stars":624,"repoUrl":625,"updatedAt":693},"distributed-sql","distributed sql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[689,690,691,692],{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},{"name":642,"slug":643,"type":16},{"name":645,"slug":646,"type":16},"2026-07-12T08:36:48.104182",{"slug":695,"name":695,"fn":630,"description":631,"org":696,"tags":697,"stars":624,"repoUrl":625,"updatedAt":703},"dsql",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[698,699,700,701,702],{"name":24,"slug":25,"type":16},{"name":639,"slug":640,"type":16},{"name":666,"slug":667,"type":16},{"name":642,"slug":643,"type":16},{"name":645,"slug":646,"type":16},"2026-07-12T08:36:36.374512",{"slug":705,"name":705,"fn":706,"description":707,"org":708,"tags":709,"stars":722,"repoUrl":723,"updatedAt":724},"cost-efficiency-analyzer","analyze cost efficiency and expenses","Analyzes cost structure, cost efficiency, and expense management from P&L data. Use when the user asks about costs, expenses, COGS, operating expenses, cost ratios, cost control, spending efficiency, margin compression from cost side, or wants to understand where money is going. Also use for \"are we spending too much\", \"cost breakdown\", \"expense analysis\", or \"how efficient are our operations\". NOT for revenue or top-line analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[710,713,716,719],{"name":711,"slug":712,"type":16},"Accounting","accounting",{"name":714,"slug":715,"type":16},"Analytics","analytics",{"name":717,"slug":718,"type":16},"Cost Optimization","cost-optimization",{"name":720,"slug":721,"type":16},"Finance","finance",3176,"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fagentcore-samples","2026-07-12T08:40:03.29555",{"slug":726,"name":726,"fn":727,"description":728,"org":729,"tags":730,"stars":722,"repoUrl":723,"updatedAt":739},"executive-financial-briefing","generate executive financial briefings","Generates a concise executive-level financial briefing or summary suitable for a CEO, CFO, or board presentation. Use when the user asks for a summary, briefing, executive summary, board update, financial overview, financial health check, or \"how is the business doing\". Covers the full P&L picture in one page. Also use for \"give me the highlights\", \"what do I need to know\", or \"quick financial update\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[731,732,733,736],{"name":24,"slug":25,"type":16},{"name":720,"slug":721,"type":16},{"name":734,"slug":735,"type":16},"Management","management",{"name":737,"slug":738,"type":16},"Reporting","reporting","2026-07-12T08:40:02.066471",{"slug":741,"name":741,"fn":742,"description":743,"org":744,"tags":745,"stars":722,"repoUrl":723,"updatedAt":754},"multi-quarter-trend-analysis","analyze multi-quarter financial trends","Analyzes financial trends across multiple quarters by comparing P&L metrics over time. Use when the user wants to see trends, patterns, trajectories, or directional movement across 3 or more quarters. Also use for \"how are we trending\", \"show me the trend\", \"track performance over time\", \"quarter over quarter comparison across all quarters\", or any multi-period longitudinal analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[746,747,748,751],{"name":714,"slug":715,"type":16},{"name":720,"slug":721,"type":16},{"name":749,"slug":750,"type":16},"Financial Statements","financial-statements",{"name":752,"slug":753,"type":16},"Variance Analysis","variance-analysis","2026-07-12T08:40:00.79141",{"slug":756,"name":756,"fn":757,"description":758,"org":759,"tags":760,"stars":722,"repoUrl":723,"updatedAt":769},"pdf","process and manipulate PDF documents","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[761,764,767],{"name":762,"slug":763,"type":16},"Automation","automation",{"name":765,"slug":766,"type":16},"Documents","documents",{"name":768,"slug":756,"type":16},"PDF","2026-07-12T08:41:44.135656",{"slug":771,"name":771,"fn":772,"description":773,"org":774,"tags":775,"stars":722,"repoUrl":723,"updatedAt":784},"quarterly-kpi-calculator","calculate quarterly financial KPIs","Calculates quarterly financial KPIs from P&L data. P&L figures can be provided directly by the user or fetched from the financial data MCP server. Use when the user wants KPI calculations such as Gross Margin %, EBITDA Margin %, Operating Expense Ratio, or Revenue Growth % QoQ. Also use for quarterly performance review, P&L analysis, or interpreting financial ratios against benchmarks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[776,777,780,781],{"name":711,"slug":712,"type":16},{"name":778,"slug":779,"type":16},"Data Analysis","data-analysis",{"name":720,"slug":721,"type":16},{"name":782,"slug":783,"type":16},"KPI","kpi","2026-07-12T08:39:59.54971",150]