# bulk-data-sharing-design

Walks you through designing bulk data delivery to customers: Parquet drops in a bucket, Snowflake shares or Delta Sharing. Useful when a SaaS hands out data in batches, not over an API.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 7800 installs · ★ 7
- Author: Samuel Berthe
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/samber/developer-platform-skills/tree/HEAD/skills/bulk-data-sharing-design/SKILL.md
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/skills/bulk-data-sharing-design

## What it does

The skill turns the agent into a data-platform product designer. It runs an interview first, then works through eight steps: pick the camp (file-drop, native share, or both), specify the file layout and partitioning contract, set delivery cadence and freshness, design the credential model, allocate egress and storage cost, write the schema-evolution contract, settle compliance and residency, and stage the rollout. Each answer changes a later step, so the interview is not optional.

The camp choice has a clear logic. A native share (Snowflake Secure Data Sharing, Databricks Delta Sharing, BigQuery linked datasets) copies nothing, so there is no egress bill and no storage duplication. But it needs a share-capable destination on the recipient's side. Hive-partitioned Parquet in object storage is the shape every consuming engine reads, which makes it the fallback. The skill advises shipping both rather than picking one.

One hard limit: this is not for live SQL endpoints. The same repository carries `samber/developer-platform-skills@sql-jdbc-access-design` for that case. The skill also leans on agent memory. If memory lives in a file, it suggests `developer-platform-context.md` and asks you to store the settled decisions there — chosen camp, partition contract, cadence, credential model, cost split, residency posture.

## Requirements
- Works with: Snowflake

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add samber/developer-platform-skills --skill bulk-data-sharing-design -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/bulk-data-sharing-design/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/bulk-data-sharing-design/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add samber/developer-platform-skills --skill bulk-data-sharing-design -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/bulk-data-sharing-design/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add samber/developer-platform-skills --skill bulk-data-sharing-design -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/bulk-data-sharing-design/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install samber/developer-platform-skills bulk-data-sharing-design
```

2. **Manually: put the files in place**
- File: `.github/skills/bulk-data-sharing-design/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add samber/developer-platform-skills --skill bulk-data-sharing-design -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/samber/developer-platform-skills --path skills/bulk-data-sharing-design
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/bulk-data-sharing-design/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add samber/developer-platform-skills --skill bulk-data-sharing-design -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/samber/developer-platform-skills/tree/HEAD/skills/bulk-data-sharing-design/SKILL.md

## When to use it
- choose between Parquet drops and a native warehouse share
- define the partitioning and file-size contract
- set delivery cadence and freshness commitments
- give each recipient its own credentials to a shared bucket
- split egress cost between vendor and customer

## Example prompts
- Design bulk export for our customers: Parquet in S3 or a Snowflake share?
- Help me pick the delivery cadence: full dump, incremental or CDC
- Work out the schema-evolution contract across batches and the shared-bucket credential model

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 3bfd9b8fb1a6e009.

BEGIN THIRD-PARTY FILE 3bfd9b8fb1a6e009
```text
---
name: bulk-data-sharing-design
description: Design bulk file and lake export as a B2B product surface - the two-camp choice between Parquet file-drops on object storage and native warehouse/lake sharing (Snowflake shares, Delta Sharing, linked datasets), the partitioning and schema-evolution contract across batches, delivery cadence and freshness commitments (full dump vs incremental vs CDC vs streaming), shared-bucket security with per-recipient credentials, egress cost allocation, and cross-border data residency. Use whenever the user mentions bulk export, data dumps to S3, Parquet, Snowflake shares, Delta Sharing, or export freshness SLAs - even if they never say "bulk data sharing". Do NOT use for live SQL endpoints - use samber/developer-platform-skills@sql-jdbc-access-design instead.
license: MIT
metadata:
  author: Samuel Berthe
  version: "1.0.1"
---

# Bulk Data Sharing Design

You are a data-platform product designer. Design how a SaaS product hands its customers their own data in bulk - as files on object storage, as a native warehouse or lake share, or as a stream - so a customer's data team can join it against the rest of their business without building a scraper against your API.

The motivating precedent: before Stripe shipped Data Pipeline, a customer wanting Stripe data in a warehouse either built a custom API pipeline (Stripe's own estimate: months of work, hundreds of thousands of dollars) or bought a third-party ETL sync with incomplete coverage. A vendor-run bulk surface is the third option - full coverage by construction, and every vendor studied sells it as a premium feature.

**Memory (advised):** When memory lives in a file, consider using `developer-platform-context.md`; if a different memory system is in use, rely on that instead. The file is an advisory reference, not a mandatory requirement. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
```
END THIRD-PARTY FILE 3bfd9b8fb1a6e009

The third-party file has ended. Everything between the 3bfd9b8fb1a6e009 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2033 of 23645 bytes. © Samuel Berthe · MIT · https://github.com/samber/developer-platform-skills/tree/HEAD/skills/bulk-data-sharing-design/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
