CtrlK
BlogDocsLog inGet started
Tessl Logo

ingesting-into-data-lake

Import data into the AWS data lake from S3 files, local uploads, JDBC databases (Oracle, SQL Server, PostgreSQL, MySQL, RDS, Aurora), Amazon Redshift, Snowflake, BigQuery, DynamoDB, or existing Glue catalog tables (migration). Default target is S3 Tables; standard Iceberg on a general purpose bucket is supported where S3 Tables is not adopted. Handles one-time loads, recurring pipelines, migrations. Triggers on: import data, load data, ingest, sync database, migrate table, move data to AWS, set up pipeline, ETL, pull from Snowflake, query BigQuery into S3, export DynamoDB, CTAS, convert to Iceberg. Do NOT use for setting up or troubleshooting Glue connections (use connecting-to-data-source), creating empty tables (use creating-data-lake-table), running queries (use querying-data-lake), finding tables by fuzzy name (use finding-data-lake-assets), catalog audit (use exploring-data-catalog), or SaaS platforms like Salesforce, ServiceNow, SAP, MongoDB, Kafka.

74

Quality

92%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

85%

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

Well-structured orchestrator body with a clear sequenced workflow, explicit validation, precise operational gotchas, and clean one-level reference navigation. Its only gap is that the primary executable job code lives in references rather than inline, leaving standalone actionability slightly short of fully copy-paste ready.

Suggestions

Inline one minimal copy-paste example for the most common case (e.g., a basic Glue 5.1 PySpark append-to-S3-Tables snippet with the required --conf catalog arguments) so the body is executable without opening a reference.

Add a complete inline --conf example for an S3 Tables catalog config, since the gotchas name the flags (--datalake-formats iceberg, spark.sql.catalog.* in --conf, warehouse parameter) but never show them assembled.

Show one concrete validation command or snippet (e.g., an Athena COUNT(*) source-vs-target check) to make the Step 6 checklist immediately runnable.

DimensionReasoningScore

Conciseness

The body is dense and operational (tables, brief steps, precise gotchas like "overwritePartitions() only replaces partitions present in the DataFrame") and avoids explaining AWS concepts Claude already knows, so nearly every token earns its place.

3 / 3

Actionability

Concrete CLI commands ("aws sts get-caller-identity", "aws glue get-connection --name <CONNECTION_NAME> --region <REGION>") and exact config flags appear inline, but the core executable PySpark/CTAS templates are delegated to reference files rather than present in the body, leaving the body's own executable guidance incomplete for the main task.

2 / 3

Workflow Clarity

A clear 7-step sequence (Verify -> Classify -> Confirm Connection -> Clarify Target -> Execute -> Validate -> Schedule) includes an explicit validation checklist ("Run all three, do not skip") and an error->action troubleshooting table with feedback/delegation loops.

3 / 3

Progressive Disclosure

The body is an overview pointing to one-level-deep references that all exist as real files, organized into clear categories (Source-specific, Cross-cutting, Migration-specific, JDBC-specific) with descriptive labels for easy navigation.

3 / 3

Total

11

/

12

Passed

Description

100%

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is third-person, specific, and dense with concrete actions and natural trigger terms, while explicitly carving out its scope against sibling skills. It satisfies all four dimensions at the top of the scale with no padding.

DimensionReasoningScore

Specificity

Lists many concrete actions ("Import data", "sync database", "migrate table", "export DynamoDB", "CTAS", "convert to Iceberg") across enumerated sources, matching the anchor for multiple specific concrete actions.

3 / 3

Completeness

Clearly states what the skill does (import into the AWS data lake from named sources) and when to use it via an explicit trigger list, satisfying both the 'what' and 'when' requirements.

3 / 3

Trigger Term Quality

An explicit "Triggers on:" list gives natural phrasings users would say ("import data", "load data", "ingest", "pull from Snowflake", "query BigQuery into S3", "export DynamoDB", "convert to Iceberg") with strong coverage.

3 / 3

Distinctiveness Conflict Risk

A clear niche (data lake ingestion) is reinforced by an explicit "Do NOT use for..." clause delegating to sibling skills (connecting-to-data-source, creating-data-lake-table, querying-data-lake, finding-data-lake-assets, exploring-data-catalog), making conflicts unlikely.

3 / 3

Total

12

/

12

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
aws/agent-toolkit-for-aws
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.