К основному содержанию
скилл CX Codex

s3-explore — скилл для Claude Code: запросы к S3 без скачивания

Скилл показывает, что лежит в бакете, и выполняет SQL-запросы к Parquet, CSV и JSON прямо в объектном хранилище.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add duckdb/duckdb-skills --skill s3-explore -a claude-code
Открыть на GitHub

Что делает s3-explore

Скилл подключается, когда в разговоре появляется ссылка вида s3://, r2://, gs:// или gcs://. Дальше агент сам определяет провайдера и настраивает доступ: для AWS S3, Cloudflare R2 и GCS используется CREATE SECRET с PROVIDER credential_chain, для MinIO и других S3-совместимых хранилищ нужны KEY_ID, SECRET и ENDPOINT. Публичные бакеты вроде Overture Maps открываются без секрета.

Если ссылка ведёт на бакет или папку, скилл выводит список файлов с размерами и датой изменения. Если на конкретный файл или маску — показывает схему, число строк и первые 20 записей. Для Parquet метаданные читаются отдельно: количество строк и сжатый объём берутся из parquet_metadata, поэтому сами данные не качаются.

Аналитические вопросы решаются обычным SQL. DuckDB проталкивает фильтры внутрь Parquet на S3, так что отбор по большому удалённому датасету не превращается в загрузку всего файла. Работает это через CLI duckdb и расширение httpfs, поэтому локальный duckdb нужен на месте — если команда не найдена, скилл отправляет к /duckdb-skills:install-duckdb. При 403 стоит проверить aws configure или переменные окружения, при 404 — URL и регион.

Какие задачи решает

  • посмотреть, какие файлы лежат в бакете, и узнать их размер
  • прочитать схему удалённого Parquet до скачивания
  • посчитать строки в датасете на S3 по метаданным
  • выполнить SQL-фильтр по данным в объектном хранилище
  • проверить, доступен ли бакет и не истекли ли ключи

Примеры запросов агенту

  • /s3-explore s3://my-bucket/data/ — что там лежит?
  • /s3-explore s3://my-bucket/events.parquet сколько строк за прошлую неделю?
  • /s3-explore gs://public-bucket/ — покажи схему и первые строки

Как установить s3-explore

1Через Skills CLI (Vercel)

npx skills add duckdb/duckdb-skills --skill s3-explore -a claude-code

2Вручную: положить файлы

~/.claude/skills/s3-explore/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/s3-explore/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о s3-explore

Как установить s3-explore в Claude?

Выполните npx skills add duckdb/duckdb-skills --skill s3-explore -a claude-code. Файл скилла появится по пути ~/.claude/skills/s3-explore/SKILL.md.

Что делает s3-explore?

Списывает содержимое бакета, показывает схему и число строк удалённых файлов и выполняет SQL-запросы к Parquet, CSV и JSON на S3, R2, GCS и MinIO без скачивания данных.

Что нужно, чтобы скилл заработал?

Локальный duckdb с расширением httpfs и настроенные доступы к хранилищу. Для AWS это aws configure или переменные окружения, для MinIO — KEY_ID, SECRET и ENDPOINT в CREATE SECRET.

Исходный текст

SKILL.md · MIT
---
name: s3-explore
description: >
  Explore and query data on S3, Cloudflare R2, GCS, MinIO, or any S3-compatible storage.
  Use when the user mentions an s3://, r2://, gs://, or gcs:// URL, asks "what's in this bucket",
  wants to list remote files, preview remote Parquet/CSV/JSON, or query data on object storage
  without downloading it. Also triggers when the user wants to know the size, schema, or row count
  of remote datasets.
argument-hint: <s3-url> [question about the data]
allowed-tools: Bash
---

You are helping the user explore data on remote object storage using DuckDB.

URL: `$0`
Question: `${1:-list and describe what's there}`

## Step 1 — Detect provider and set up credentials

Based on the URL or user context, prepend the appropriate secret configuration:

| Provider | URL patterns | Secret setup |
|---|---|---|
| **AWS S3** | `s3://` | `CREATE SECRET (TYPE S3, PROVIDER credential_chain);` |
| **Cloudflare R2** | `r2://`, `s3://` with R2 endpoint | `CREATE SECRET (TYPE R2, PROVIDER credential_chain);` |
| **GCS** | `gs://`, `gcs://` | `CREATE SECRET (TYPE GCS, PROVIDER credential_chain);` |
| **MinIO / custom** | `s3://` with custom endpoint | `CREATE SECRET (TYPE S3, KEY_ID '...', SECRET '...', ENDPOINT '...', USE_SSL true);` |

For R2, if the user provides an account ID, the endpoint is `<account_id>.r2.cloudflarestorage.com`. R2 URLs like `r2://bucket/path` should be rewritten to `s3://bucket/path` with the R2 secret.

For public buckets (e.g., Overture Maps, AWS open data), no secret is needed — skip this step.

Always prepend:
```sql
LOAD httpfs;
```

## Step 2 — Determine what the URL points to

If the URL looks like a **directory or bucket** (no file extension, or ends with `/`), list its contents with sizes:

```bash
duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
SELECT filename, (size / 1024 / 1024)::DECIMAL(10,1) AS size_mb, last_modified
FROM read_blob('<URL>/*')
ORDER BY filename
LIMIT 50;
"
```

Note: only select `filename`, `size`, `last_modified` — never select `content`, which would download the actual files.

If the URL points to a **specific file or glob pattern** (has a file extension or contains `*`), preview it:

```bash
duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
DESCRIBE FROM '<URL>';
SELECT count(*) AS row_count FROM '<URL>';
FROM '<URL>' LIMIT 20;
"
```

For **Parquet files**, get row counts and sizes from metadata (no data download):

```bash
duckdb -c "
LOAD httpfs;
<SECRET_SETUP>
SELECT file_name,
       sum(row_group_num_rows) AS total_rows,
       (sum(row_group_compressed_bytes) / 1024 / 1024)::DECIMAL(10,1) AS compressed_mb
FROM parquet_metadata('<URL>')
GROUP BY file_name;
"
```

## Step 3 — Answer the question

Using the listing, schema, or sample data, answer:

`${1:-list and describe what's there}`

If the user asks an analytical question (e.g., "how many rows match X"), write and run the appropriate SQL query. DuckDB pushes predicates down into Parquet on S3, so filtering is efficient even on large remote datasets.

## Error handling

- **`duckdb: command not found`** → delegate to `/duckdb-skills:install-duckdb`
- **Access denied / 403** → suggest the user check credentials: `aws configure`, environment variables, or provide explicit key/secret
- **Bucket not found / 404** → check the URL and region
- **Timeout on large listing** → suggest narrowing the glob pattern or adding a prefix

© duckdb · MIT · duckdb/duckdb-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
explore-data официальный anthropics Профилирует таблицы и локальные датасеты, выявляя пропуски, аномалии и распределения значений перед началом анализа. CX Codex +1 5 900установок neon-object-storage neondatabase Настраивает S3-совместимое хранилище Neon, которое ветвится вместе с базой данных. Пригодится для загрузок, изображений и документов приложения. CX Codex +1 28 200установок datapackage catalyst-cooperative Скилл читает дескриптор Frictionless Data Package и отвечает, какие таблицы и колонки есть в датасете, как его загрузить и о чём предупреждает метадата. CX Codex +1 2 100установок exporting-rds-to-s3 aws Проведёт агента по шагам экспорта снимка RDS или Aurora в S3 в формате Parquet: роли IAM, шифрование KMS, запуск задачи и проверка данных. CX Codex +1 6 100установок tigris-s3-migration tigrisdata Скилл ведёт миграцию объектного хранилища с AWS S3, GCS или Azure Blob на Tigris. Пригодится, когда нужно переключить бакет без остановки продакшена. CX Codex +1 3 100установок encore-bucket encoredev Учит агента работать с объектным хранилищем Encore.ts: загрузка, скачивание, список и удаление файлов через Bucket. CX Codex +1 419установок

Из того же набора6

Спонсоры проекта

Компании, которые помогают держать аналитику открытой