# Ingest S3 Data with WAP

Data teams need a safer way to load S3 files into Bauplan without changing main immediately. This skill guides a branch-based Write-Audit-Publish flow with checks before publish.

## Install

```bash
npx skillstore add bauplanlabs/wap-ingestion
```

## Metadata

- Status: approved
- Slug: bauplanlabs-wap-ingestion
- Skillstore revision: r1
- Version status: missing
- Tree hash: e48db5c7fc6fa6458b1e068024e4959b8909b45565599df5bb9ce0b93153372f
- Author: BauplanLabs
- GitHub username: BauplanLabs
- License: MIT
- Repository: https://github.com/BauplanLabs/bauplan-mcp-server/tree/main/skills/wap
- Ref: 26421118b848d9f1efc0aa169d8a7a9e7e0a877e
- Supported tools: Claude, Codex, Claude Code
- Audit status: complete
- Agent install advisory: allowed
- Manual install advisory: allowed
- Artifact signature: available
- Audit attestation: unavailable
- Human verification: not\_verified
- Risk factors: external\_commands, network
- Quality score: 78
- Quality tier: bronze
- Public page: https://skillstore.pages.dev/skills/bauplanlabs-wap-ingestion
- Manifest: https://skillstore.pages.dev/api/skills/bauplanlabs-wap-ingestion/manifest

## Capabilities

- Collects the S3 path, target table name, and branch handling choices before script creation.
- Guides a Python SDK workflow that creates a temporary branch from main.
- Supports creating new tables from S3 files and appending data to existing tables.
- Adds an audit phase that verifies imported row counts before publishing.
- Explains inspect, merge, keep, and delete outcomes for success and failure paths.
- Provides manual CLI merge steps after a user reviews the temporary branch.

## Use Cases

- Load a New S3 Dataset: Create a temporary Bauplan branch, ingest S3 files, and inspect row counts before publication.
- Append to an Existing Table: Use the existing table path to import new S3 rows while keeping changes isolated on a branch.
- Review a Controlled Publish: Keep the branch open after ingestion so a reviewer can inspect data before merging to main.

## Prompt Templates

### Start a Basic WAP Ingestion

```
Help me ingest data from this S3 path into a new Bauplan table using WAP. Ask me for any missing required inputs first.
```

### Prepare an Inspect-Only Load

```
Create a WAP ingestion script for my S3 dataset. Use inspect on success and keep the branch on failure.
```

### Append Data with Extra Checks

```
Adapt the WAP flow to append S3 data to an existing Bauplan table. Add audit checks beyond row count before publish.
```

### Plan a Multi-Table Publish

```
Design a WAP ingestion workflow for multiple related Bauplan tables. Keep all changes on one branch and explain the publish decision points.
```

## Limitations

- Requires Bauplan credentials, access to the source S3 location, and the Bauplan Python SDK.
- The default audit only checks that at least one row was imported.
- The template expects users to customize table names, namespaces, and source paths correctly.
- Manual merge steps require the Bauplan CLI and a correctly selected branch.

## Best Practices

- Keep the default inspect behavior until a human has reviewed the imported data.
- Add dataset-specific quality checks before allowing a merge to main.
- Use clear table names and branch names so reviewers can trace the ingestion source.

## Anti Patterns

- Do not merge to main before validating row counts and expected schema behavior.
- Do not delete failed branches when they are needed for debugging or audit evidence.
- Do not reuse the template without replacing example S3 paths and table names.

## Security Audit

- Audited at: 2026-07-09T15:16:11.45\+00:00
- Summary: Most static findings are false positives caused by Markdown backticks around prose, SDK method names, and code fences. The skill does include legitimate local command usage for running the generated WAP script and for Bauplan CLI merge or cleanup steps, so those command-oriented findings are confirmed as medium risk. No prompt injection, credential exfiltration intent, or malicious network behavior was found.

## Stats

- Views: 198
- Downloads: 8
- Favorites: 0
- Popularity score: 0
