Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

querying-data-lake — Claude Code skill: what it does, how to install

A skill that runs SQL in Amazon Athena: it picks a workgroup, stops destructive statements for confirmation and reports what the query cost.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add aws/agent-toolkit-for-aws --skill querying-data-lake -a claude-code
Open on GitHub

What querying-data-lake does

The skill hands the agent a control panel for Amazon Athena. It takes SQL text, a saved query name, a workgroup, a catalog, or profile TABLE_NAME. A workgroup is chosen before anything is submitted, so the output location is known rather than guessed, and credentials get checked with aws sts get-caller-identity. Queries go through the AWS MCP server (aws___call_aws), or through aws athena from the CLI when that server is missing.

Every statement is classified first. SELECT, SHOW, DESCRIBE and EXPLAIN run straight away. INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, TRUNCATE and MERGE wait for explicit confirmation, and a statement the skill cannot place is treated as destructive. Results arrive with data scanned, duration and cost attached.

Federated catalogs are where it gets fiddly. A Redshift-federated table has no partition pruning, so each query reads the whole thing, and the skill says so before executing; start exploratory runs with LIMIT. Cross-catalog joins carry network overhead. Mixed-case identifiers fail on Redshift, where names are lowercase only. The agent also asks for the AWS region and confirms the output S3 location before a non-trivial query.

What it helps with

  • run SQL against a Glue-catalog table and see how much data it scanned
  • catch a DELETE or DROP before it executes and confirm it by hand
  • profile an unfamiliar table ahead of an analytical query
  • check a workgroup's status and its recent queries
  • join tables from two catalogs with the network cost known upfront

Example prompts for the agent

  • Run `SELECT * FROM sales.orders LIMIT 5` in the `analytics` workgroup
  • `profile sales.orders` and show me the schema plus a few sample rows
  • Show the status of the `primary` workgroup and its latest queries

How to install querying-data-lake

1Skills CLI (Vercel)

npx skills add aws/agent-toolkit-for-aws --skill querying-data-lake -a claude-code

2Manually: put the files in place

~/.claude/skills/querying-data-lake/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/querying-data-lake/

From the same set8

The whole set →
aws-iam aws Verified corrections for the IAM mistakes agents keep making, plus step-by-step workflows for roles and baseline policies. Claude Code CX Codex Cursor +1 10,200installs aws-serverless aws A router skill for AWS serverless work: it picks a compute form factor per component and hands off to the skill that owns it. Claude Code CX Codex Cursor +1 10,100installs aws-cdk aws A Claude Code skill that gives the agent AWS CDK expertise in TypeScript and Python: writing constructs, deploying stacks, importing existing resources, and reading CloudFormation failures. Claude Code CX Codex Cursor +1 9,400installs aws-containers aws Deploys containers on AWS: EKS, ECS, Fargate, ECR, Elastic Beanstalk. Use it when deploying, debugging, or optimizing containerized workloads. Claude Code CX Codex Cursor +1 9,300installs aws-billing-and-cost-management aws Analyzes AWS spending, discovers savings opportunities, and sets up budgets. Helps evaluate Savings Plans, detect cost anomalies, and right-size infrastructure. Claude Code CX Codex Cursor +1 8,900installs aws-cloudformation aws Takes CloudFormation templates from authoring to failed-stack post-mortem: local validation, cfn-guard checks, account-aware pre-deploy checks and root-cause tracing. Claude Code CX Codex Cursor +1 8,800installs connecting-to-data-source aws Builds and tests an AWS Glue connection to Oracle, PostgreSQL, Redshift, Snowflake or BigQuery, so a job does not discover the wiring is wrong at runtime. Claude Code CX Codex Cursor +1 6,800installs

Similar

aws-solution-architect Alireza Rezvani Designs AWS architectures, produces IaC templates, and reviews cloud costs. Use it for serverless builds, AWS migration work, or CI/CD planning. Claude Code 1,586installs vercel-sandbox official Vercel Labs This skill runs user-generated and AI-generated code inside an ephemeral Vercel Sandbox. Use it for browser automation and code checks that should stay outside the main environment. CX Codex GP ChatGPT 27installs applicationinsights-web-ts Microsoft Set up Application Insights telemetry for browser apps, including page views, requests, and exceptions. Use it for RUM or to connect browser-side GenAI agent traces with backend spans. Claude Code GitHub Copilot 38installs workers-best-practices cloudflare Guides coding agents on production Cloudflare Workers standards, Wrangler typing, observability setup, and runtime anti-pattern checks. Claude Code CX Codex Cursor +1 124,900installs cloudflare-email-service cloudflare A skill for Cloudflare Email Sending and Email Routing: it walks the agent through sending and receiving mail in Workers. Claude Code CX Codex Cursor +1 101,400installs firebase-basics official google This skill sets up the Firebase CLI, handles sign-in, creates or switches projects, and downloads Android or iOS app configuration files. Claude Code Gemini CLI CX Codex 14,100installs cloudflare-one cloudflare Walks your agent through designing, configuring and troubleshooting Cloudflare One Zero Trust and SASE deployments. Useful when you need Access, Gateway or tunnel work done without digging through docs yourself. Claude Code CX Codex Cursor +1 92,200installs cloudflare-one-migrations cloudflare Plans a migration from VPN, SWG or SASE to Cloudflare One: maps policies to Cloudflare resources, flags parity gaps and stages the rollout. Claude Code CX Codex Cursor +1 88,700installs

Questions about querying-data-lake

How do I install querying-data-lake in Claude Code?

Run npx skills add aws/agent-toolkit-for-aws --skill querying-data-lake -a claude-code. The skill then lives at ~/.claude/skills/querying-data-lake/SKILL.md.

What does querying-data-lake do?

It executes and manages SQL queries in Amazon Athena. It resolves a workgroup, separates safe statements from destructive ones, and returns results with the data scanned and the cost.

What does the skill need in order to work?

Valid AWS credentials plus one execution path: the AWS MCP server with aws___call_aws, or the AWS CLI. The agent asks for the AWS region and the output S3 location before running a query.

Source text

SKILL.md · Apache-2.0
---
name: querying-data-lake
description: >-
  Execute and manage Athena SQL queries across default and federated catalogs (Glue,
  S3 Tables, Redshift). Triggers on phrases like: query data, run SQL, athena query,
  analyze table, SQL query, workgroup status, profile table, query Redshift catalog,
  query S3 Tables. Do NOT use for finding specific data assets (use finding-data-lake-assets),
  full catalog audits (use exploring-data-catalog), importing data (use ingesting-into-data-lake).
metadata:
  version: "1"
  argument-hint: "'[SQL-query|query-name|workgroup-name|catalog-name|''profile TABLE_NAME'']'"
---

# Query Data Lake

Execute SQL queries on Amazon Athena across default and federated catalogs (Glue, S3 Tables, Redshift) with workgroup selection, statement classification, and error recovery.

## Overview

Executes and manages Athena SQL queries across default and federated catalogs. Selects a workgroup, resolves target assets (delegating fuzzy references to `finding-data-lake-assets`), classifies statements for safety, and reports cost and data scanned. Use the AWS MCP server for sandboxed execution and audit logging; the same AWS CLI commands work directly when the MCP server is not available.

**Constraints for parameter acquisition:**

- You MUST accept a single optional argument: SQL text, a named-query name, a workgroup name, a catalog name, or `profile TABLE_NAME`
- You MUST accept the argument as direct text or a pointer to a file containing SQL
- You MUST ask the user for the target AWS region if not already set
- You MUST confirm the output S3 location before executing any non-trivial query
- You MUST respect the user's decision to abort at any step

## Common Tasks

### 1. Verify Dependencies

Check for required tools and AWS access before running queries.

**Constraints:**

- You MUST verify AWS MCP server tools are available (`aws___call_aws`) and run queries through them when present; fall back to AWS CLI only if the MCP server is unavailable
- You MUST NOT fall back to shell or Bash for query execution — results must be captured via the MCP tool or `aws athena` CLI so output location and cost are tracked
- You MUST confirm credentials with `aws sts get-caller-identity` and inform the user about any missing tools

### 2. Resolve Workgroup

Check caller identity, list workgroups, auto-select the best one (see [workgroup-selection.md](references/workgroup-selection.md)).

**Constraints:**

- You MUST select a workgroup before submitting any query (prevents output-location errors)
- You MUST present the selected workgroup and its output location to the user
- You MUST NOT auto-escalate to a different workgroup on failure without user confirmation

### 3. Resolve the Target Asset

If the user refers to a table by name, by business concept ("our quarterly report", "the sales data"), by S3 path, or by catalog without specifying the table, delegate to `finding-data-lake-assets` to return the concrete `database.table` (and catalog if non-default).

**Constraints:**

- You MUST NOT attempt to resolve fuzzy asset references with `athena list-data-catalogs` or by iterating `get-tables` — those miss federated catalogs and waste tokens
- You SHOULD skip this step only when the user provides a fully-qualified reference (exact `database.table`) or raw SQL they want executed as-is
- You MUST state the resolved asset explicitly before building the query: "Found [table] in [catalog]. Using this for the query."
- You SHOULD default to the default Glue catalog unless the user mentions "federated", "Redshift", "S3 Tables", or `finding-data-lake-assets` returns a different catalog

### 4. Discover Schema

For analytical queries, You SHOULD profile the target table before building the final query. You MUST show sample rows (`SELECT ... LIMIT 5`) as part of profiling.

### 5. Build Query

Table addressing depends on catalog type:

- Default Glue catalog: `database.table` (omit the catalog prefix for single-catalog queries). In cross-catalog queries, qualify default-catalog tables with `"awsdatacatalog".database.table`.
- Registered data source: `datasource.database.table`
- Unregistered Glue catalog: `"catalog/subcatalog".database.table`

### 6. Classify and Execute

Classify the SQL statement before executing:

| Statement | Behavior |
|---|---|
| `SELECT`, `SHOW`, `DESCRIBE`, `EXPLAIN` | Safe — execute |
| `INSERT`, `UPDATE`, `DELETE`, `DROP`, `ALTER`, `CREATE`, `TRUNCATE`, `MERGE` | Destructive — warn the user and require explicit confirmation |
| Unsure | Treat as destructive; confirm |

Example tool call (via AWS MCP server):

```
aws___call_aws(command="aws athena start-query-execution --work-group <WORKGROUP_NAME> --query-string '<sql>' --query-execution-context Database=<db>")
```

For federated or S3 Tables catalogs, also set `Catalog=<CATALOG_PATH>` in the execution context (e.g. `Catalog=s3tablescatalog/<BUCKET_NAME>`).

**Constraints:**

- You MUST warn the user before executing when the target is Redshift-federated ("No partition pruning — every query scans the full table")
- You MUST warn the user before executing a cross-catalog join ("Cross-catalog joins incur network overhead and may be slow")
- You MUST confirm the output S3 location before executing
- You MUST explain which tool is being called before executing
- You MUST respect the user's decision to abort

### 7. Present and Recover

Present results with cost, data scanned, duration, and actionable insights. On failure, list available workgroups and let the user choose which to retry with.

### Argument Routing

Resolve in this order; stop at the first match:

1. Contains SQL keywords (`SELECT`, `SHOW`, `DESCRIBE`, `INSERT`, etc.) — SQL text, execute directly
2. `profile TABLE_NAME` — run comprehensive table profiling (see [query-patterns.md](references/query-patterns.md))
3. Matches a known named query — look up and execute
4. Matches a known workgroup — show workgroup status and recent queries
5. Matches a known catalog — delegate to `exploring-data-catalog` to enumerate databases and tables
6. No args — show recent query activity and available tables

### Principles

- Always select workgroup before executing (prevents output-location errors)
- Profile unfamiliar tables before running analytical queries
- Present cost alongside results so users build cost awareness
- Suggest `LIMIT` for exploratory queries on large tables
- Never ask domain questions with obvious answers, but always confirm security-relevant actions (workgroup switches, output location changes, non-SELECT statements)

## Troubleshooting

| Error | Cause | Fix |
|---|---|---|
| Redshift identifier error with mixed case | Redshift-federated names are lowercase only | Lowercase the identifier |
| `CatalogId` validation failure | ARN passed instead of catalog name | Pass the catalog name, not the ARN |
| Cross-catalog `information_schema` returns nothing | Missing catalog qualifier | Use catalog-qualified path: `"catalog".information_schema.tables` |
| Query fails with output-location error | Workgroup has no output location configured | Select a different workgroup with an output location, or configure one |
| Destructive statement executed without confirmation | Statement classification skipped | Always classify `INSERT`/`UPDATE`/`DELETE`/`DROP`/`ALTER`/`CREATE`/`TRUNCATE`/`MERGE` and confirm with the user |

## Additional Resources

- [Workgroup selection logic](references/workgroup-selection.md)
- [Common query patterns](references/query-patterns.md)
- [Athena best practices](https://docs.aws.amazon.com/athena/latest/ug/performance-tuning.html)
- [Athena federated query](https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html)

© aws · Apache-2.0 · aws/agent-toolkit-for-aws

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor