agentleFS
Evan-Kim2028Evan-Kim2028/agent-skills/skills/data/data/SKILL.md

data

Skill1 starsChanged 3 months agoMITView on GitHub

Hub for data-engineering pipeline work — storage/ingest/serve choice plus shared discipline (idempotency, incremental-not-full-recompute, schema fencing, resilience, bounded memory, layered enforcement). Routes to data-apache-lakehouse, data-api, data-duckdb, data-pipeline-operations, data-table-lifecycle, data-semantic-quality, data-identity-resolution, and data-product-eval. Use when a task spans ingest → store → serve, the specialist isn't obvious, or you need a live coverage audit. Don't use for OLTP schema design, one-off notebooks, generic SQL, ML training, or BI config. When a specialist clearly fits, skip this hub and load it directly.

16 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use content, frontend and 4 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • Rayan55050Skill

    content

    Создание контента: посты, статьи, тексты

    Also in 3 projects that use this

  • imehrSkill

    frontend

    Use when building UI components, pages, or features - guides Claude through the approved frontend stack (Next.js 15, React 19, Shadcn, Tailwind) with design-first workflow for complex UIs, enforcing patterns and quality standards

    Also in 4 projects that use this

  • ryu111Skill

    browser

    agent-browser CLI 瀏覽器自動化指南。E2E 測試、UI 調試、設計驗證。適用於需要實際操作瀏覽器的場景。

    Also in 3 projects that use this

  • 0xSeroSkill

    security

    Also in 4 projects that use this

  • NVIDIASkill

    github

    Interact with GitHub using the gh CLI restricted to REST API only (no GraphQL). Use when the user wants to work with GitHub issues, pull requests, repos, releases, or Actions — especially in sandboxed environments where the GraphQL endpoint may be blocked. Trigger keywords - github, gh, pull request, PR, github issue, github actions, workflow, release, gh api.

    Also in 3 projects that use this

  • NVIDIASkill

    research

    Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.

    Also in 5 projects that use this

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 12 edited versions we read keep these.

  • 7

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If no specialist fits the storage layer yet, apply the principles below directly — they are format-agnostic.

    line 27
  2. Distinctive:

    Test: run the step twice on the same window.

    line 37
  3. Very specific:

    Test (chunked unique leak): after chunk 2, does the merge log existing= / preserved= against current gold, or existing=0 / no existing …

    line 52
  4. Distinctive:

    Test: if an upstream adds a column or flips a type (including timezone-aware vs naive, list vs scalar), which stage fails, and is its error …

    line 70
  5. Distinctive:

    Test: when an upstream dependency is down for an hour, does exactly one lane degrade and recover automatically, or does the whole host …

    line 82
  6. Distinctive:

    Every run records what it consumed and produced — a watermark, a row count, a run-log line.

    line 92
  7. Distinctive:

    Test: delete the checklist — does anything still block a violation?

    line 115
  8. Distinctive:

    Use when the ask is inventory, not a code change: how much data, how fresh, how usable.

    line 120

“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Data engineering — routing hub

The shared entry point for building and operating data pipelines. Its job is two things the individual skill descriptions can't do: route you to the right specialist, and state the cross-cutting principles every specialist assumes. When you already know the specialist, load it directly — this hub is for the choices you make before that, and for the discipline that spans all of them.

Routing — which skill

Your taskSkill
Designing/operating an Apache Iceberg lakehouse (bronze/silver/gold, PyIceberg, catalog choice, compaction/expire, WAP, snapshot rollback, single-host bounded-RAM writes)data-apache-lakehouse
Consuming an external HTTP API for ingestion (rate limits, backoff, pagination, auth, response validation) or serving gold/analytical data over HTTP (FastAPI + DuckDB, pushdown, keyset pagination, cache invalidation, sidecar rebuild, serving vs lake memory, freshness SLIs)data-api
Using DuckDB as the compute engine — tuning memory/threads, larger-than-memory spilling, Parquet read/write layout, connection lifecycle, EXPLAIN profilingdata-duckdb
Running multiple pipelines on shared single-host infrastructure — memory admission control, concurrency caps, capacity ratchets, OOM kills that only appear when individually-fine pipelines coexist, timer jobs that must fit one TimeoutStartSecdata-pipeline-operations
Deciding whether a table/artifact should still exist — consumer audits, safe drops, maintenance coveragedata-table-lifecycle
Semantic row truth — quality flags, outlier/anomaly rules, trust ladders, golden packs, split-brain lake vs API qualitydata-semantic-quality
Attaching messy records to a canonical entity key — fail-closed, quarantine, unresolved debt, remapdata-identity-resolution
Scoring published estimates vs later realized facts — freeze, walk-forward, coverage vs errordata-product-eval
Coverage audit — “how much / how fresh / how resolved” from live tables, not docsthis hub (playbook below), then the specialist that owns the hole
Choosing between storage formats (Iceberg vs Delta vs plain Parquet vs embedded DuckDB), or the task spans ingest → store → servestart here, then hand off
Generic interface/contract design unrelated to data movementapi-and-interface-design (not a data skill)
Wrapping an API as a live tool Claude calls at runtimebuild an MCP server, not a skill

If no specialist fits the storage layer yet, apply the principles below directly — they are format-agnostic.

Cross-cutting principles (shared by every data sub-skill)

Load-bearing in any pipeline, whatever the storage engine. Each is paired with a falsifiable test — if you can't pass the test, the principle is being violated, not "applied differently." Specialists restate the engine-specific form; the canonical version lives here.

1. Every write is idempotent

Re-running the same step — same input window, same batch — produces identical state, never duplicates. This is what makes crashes, retries, and backfills safe. Achieve it with deterministic keys (upsert/merge on a primary key, partition-overwrite of a window, or content-addressed filenames), never by hoping a step runs exactly once.

Test: run the step twice on the same window. Is the output byte-identical? If row counts grow, it isn't idempotent.

2. Move forward by a watermark, not a full recompute

Every step persists how far it has consumed — a max timestamp, a sequence number, a pagination cursor, a snapshot id — and resumes from there. "Rebuild from history" exists only behind an explicit --rebuild flag. A step with no watermark gets slower in proportion to data growth, silently.

Watch for O(history) leaks disguised as incremental — a watermark exists somewhere in the code, but a specific operation still scales with total history. Named shapes and measured cases: references/o-history-leaks.md. The ones that keep shipping:

  • Entity-keyed lifetime reload — watermark picks which keys changed, then WHERE entity_id IN (...) with no time predicate. Timer path predicates keys and the partition time column. Lifetime is --rebuild / --full.
  • Chunked unique on a frozen basis — each checkpoint unique()s corpus-so-far, or merges against a start-of-run snapshot that logs no existing. Unique this chunk; upsert into current gold.
  • Write-window / read-window split — overwrite is partitioned; the read still walks the whole raw tree.
  • Unwindowed sidecar / snapshot unique — a "daily" job scans a lifetime fact table into RAM. Daily path is a lookback merge; lifetime is --full.

Test (entity leak): a new fact for one entity today — does runtime grow with that entity's lifetime row count, or with the lookback window? If it grows with lifetime, the watermark is decorative.

Test (chunked unique leak): after chunk 2, does the merge log existing= / preserved= against current gold, or existing=0 / no existing again? If the latter, the basis is frozen or PK-invalid and each chunk is O(corpus-so-far). Peak RSS after chunk N must not track unique(rows 1..N).

Test (read vs write window): with no new files today, does the gold step skip, or does RSS grow with the full raw tree? If it grows, the read is lifetime.

A full-rebuild trigger (schema change, resolver bump, backfill) belongs on its own lane, separate from the regular incremental run, with checkpoints that survive a retry. A rebuild whose retry logic wipes its own staging checkpoints resets to record one on every crash and, on a large enough history, never finishes — measured: 9 attempts over 19 hours, 0 successes, each retry restarting a 602-day rebuild from day 1.

Test: if the upstream grew 10× tomorrow, would this step's runtime grow 10×? If yes, it lacks a watermark. Separately: does a crash mid-rebuild resume from a checkpoint, or restart from record one? If it restarts, the rebuild lane isn't resumable and won't survive its own retries on real data volume.

3. Fence schema at every boundary

Validate columns, engine types, and null fractions at each layer/stage edge, and fail loud at the boundary. Column names are not enough: Iceberg timestamptz vs DuckDB DATE, List(Utf8) vs Utf8, and field order are schema. A malformed upstream payload should error at ingestion with a clear message — not surface as a cryptic cast error three stages downstream. Keep a strict mode that turns warnings into hard failures in production. Iceberg/Arrow/DuckDB form: data-apache-lakehouse.

This is mechanical validation. Semantic correctness (right entity, right attributes for the consumer use — quality flags, trust ladders, cohort fences) is a separate concern: use data-semantic-quality. Schema fences alone do not make rows trustworthy for product aggregates.

Test: if an upstream adds a column or flips a type (including timezone-aware vs naive, list vs scalar), which stage fails, and is its error message actionable? If the failure is far from the cause, the fence is missing.

4. Publish atomically; readers never see a partial write

A reader sees either the old state or the new one, never half. Use tmp → rename for files and a transactional commit for catalogued tables. Never mutate a live output in place while readers are pointed at it.

Test: kill the writer mid-publish. Can a reader observe a torn/partial result? If yes, the publish isn't atomic.

5. Resilience is implemented, not hoped for

Retry transient failures with exponential backoff + jitter; trip a circuit breaker per external dependency so one outage degrades one lane instead of hanging every loop; route un-processable records to a dead-letter queue with enough context to replay. A swallowed exception in an unattended loop is data loss you discover a week later. Code: references/resilience-and-idempotency.md.

Test: when an upstream dependency is down for an hour, does exactly one lane degrade and recover automatically, or does the whole host wedge? Where do failed records end up?

6. Peak memory is bounded by the batch, not the dataset

Tie peak RAM to batch/page/window size, not total volume — stream record batches, lazy-scan, paginate. A step whose memory scales with the table will eventually OOM on a busy day.

Test: does this step's peak RSS depend on total row count, or on batch size? If it scales with the data, it isn't streaming.

7. Freshness is observable

Every run records what it consumed and produced — a watermark, a row count, a run-log line. An unattended pipeline you can't interrogate ("when did this last update, and with how many rows?") is one you can't trust.

Job-success is not freshness. Distinguish absent (source never landed), empty (source ran, zero rows in window), stale (watermark older than the SLA), and timeout (unit SIGTERM — not a successful empty). Empty-chunk skip is not progress; empty-all and timeout are different exits (data-pipeline-operations). Serving SLIs consume these signals; they do not invent a second clock (data-api).

Test: without reading code, can you answer "when did table X last update and how many rows landed?" from a log or a property? If a unit is green, can you still tell empty from stale from timeout? If not, add the signal.

8. Enforcement is layered: runtime guard > CI gate > checklist > review convention

A principle enforced by only a checklist or a comment is a suggestion, not enforcement. Real enforcement stacks from strongest to weakest, and the top layer is the one that actually blocks a violation: a runtime guard that refuses to proceed (a constructor that raises without a required argument, an admission gate that refuses units without a memory cap); a CI gate that structurally parses the change (a unit-file parser checking caps are present and heavy units are routed through admission, a timer-overlap lint, a live-vs-repo drift audit — not a keyword grep); a checklist artifact reviewed per pipeline (a row per pipeline × falsifiable test × last-verified date); and a review convention (a PR template row) as the last, weakest backstop. Use as many layers as the risk warrants — structure beats memory, and memory is the only thing a checklist or convention relies on.

A checker that greps source for a comment or a string literal false-passes: it confirms the words exist, not that the code does what they claim. Enforcement has to parse structure — AST, unit-file fields, config schema — not text.

Test: delete the checklist — does anything still block a violation? If no, you have documentation, not enforcement, and the runtime guard or CI gate layer is missing.

Coverage audit playbook

Use when the ask is inventory, not a code change: how much data, how fresh, how usable. Query the live warehouse / serving path. Frozen onboarding docs and agent memory are not evidence.

Coverage audit:
- [ ] 1. Name the consumer question (source × grain × window)
- [ ] 2. Read live tables (or the serving sidecar + its publish token) — not README/CLAUDE.md
- [ ] 3. Per source: landed rows, last watermark / as-of, absent vs empty vs stale
- [ ] 4. Identity rate: assigned / landed (unresolved and quarantine are not “coverage”) — **data-identity-resolution**
- [ ] 5. Stratify (status, cohort, age). A global % hides empty slices
- [ ] 6. Name the consumer of each table (**data-table-lifecycle**)
- [ ] 7. If the question is estimate honesty, stop and load **data-product-eval**

Test: can you answer “how many resolved rows landed in the last 7 days, per source, and when did each watermark move?” from published signals? If the answer came from a markdown file, the audit failed.

Principle 7 (freshness is observable) is the signal. This playbook is how you read it.

References

  • O(history) leak catalog (entity reload, frozen-basis unique, read/write window split, mtime cursor, sidecar lifetime scan): references/o-history-leaks.md
  • Shared resilience & idempotency code (retry + jitter, circuit breaker, dead-letter queue, idempotency keys): references/resilience-and-idempotency.md
  • Specialist: data-apache-lakehouse — the Iceberg-specific expression of these principles (OCC retry, snapshot watermarks, WAP branches, compaction).
  • Specialist: data-api — the API-specific expression (rate-limit buckets, pagination-cursor watermarks, response schema fencing; serving with pushdown + keyset pagination + cache invalidation; sidecar rebuild as a bounded pipeline; serving vs lake memory; freshness SLIs).
  • Specialist: data-duckdb — the embedded-engine expression (memory/thread budgeting, larger-than-memory spilling and its limits, Parquet read/write layout, connection-as-cache).
  • Specialist: data-pipeline-operations — the multi-pipeline coexistence expression (claims-based admission control, capacity pools, the capacity ratchet loop, subprocess-scope accounting, job-fits-one-TimeoutStartSec).
  • Specialist: data-table-lifecycle — the artifact-retirement expression (consumers-or-deprecate, drop durability, catalog-generated maintenance coverage).
  • Specialist: data-semantic-quality — row-truth methodology (write-time quality attributes, entity-scoped rules, trust ladders, golden packs); domain thresholds stay in the product repo.
  • Specialist: data-identity-resolution — attach/remap procedure (fail-closed, quarantine, collision, unresolved-rate, restamp order).
  • Specialist: data-product-eval — estimate vs later realized truth (freeze, walk-forward, coverage vs error, release vs observe).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.