data-pipeline-operations
Use when running multiple data pipelines on one host: memory admission, systemd MemoryMax, OOM that only appears under coexistence, capacity ratchets…
Skill by Evan-Kim2028
Chalk Labs
Need help deploying data-pipeline-operations?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/evan-kim2028-data-pipeline-operations
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, data, finance
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/data-pipeline-operations
What's inside
- Skill name
data-pipeline-operations- Description
- Use when running multiple data pipelines on one host: memory admission, systemd MemoryMax, OOM that only appears under coexistence, capacity ratchets, wait-budget vs TimeoutStartSec, timer jobs that must chunk+resume inside one start (empty-skip ≠ progress; empty-all vs timeout; catchup vs timer claim). Don't use for one pipeline's DuckDB/Iceberg memory (data-duckdb / data-apache-lakehouse) or Kubernetes. Prefer the data hub when the specialist isn't obvious.
- License
- MIT
- Instructions
- 148 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "data-pipeline-operations" does not match folder "pipeline-operations"
- files: referenced but missing: references/o-history-leaks.md
Files (2)
- SKILL.md
- admission-and-budgets.md · references/
SKILL.md (first lines)
# Data pipeline operations — running N pipelines on shared infrastructure Every pipeline skill in this family assumes it owns the host. It doesn't — it shares RAM, disk, and CPU with every other pipeline and service on the box. This skill is the discipline for that coexistence: admission control, capacity budgeting, and the operational failure modes that only show up when several individually-correct pipelines run together. It's the multi-pipeline expression of the **data** hub's cross-cutting principles, not a replacement for them. > Verified 2026-07-02 during a production multi-pipeline stabilization engagement (systemd 252+, > cgroup v2, one VPS running 15+ scheduled pipelines on 15G RAM). Code & the admission-v2 design: > [`references/admission-and-budgets.md`](references/admission-and-budgets.md). ## When to invoke this skill - Designing or debugging an admission gate that decides whether a pipeline run is allowed to start. - OOM kills that don't reproduce when a pipeline runs alone — only under real scheduling. - Sizing `MemoryMax` / cgroup caps for a systemd unit, or deciding whether to tighten an existing cap. - A lock/queue wait that silently disappears — the run never errors, it's just gone. - A timer that SIGTERMs at `TimeoutStartSec` after hours of empty-chunk skips, or a catchup that holds an admission claim until other units hit `start-limit-hit`. - Any pipeline that spawns a subprocess or `systemd-run --scope` child and you're not sure what bounds its memory. - Reviewing timers/schedules for a host running more than a couple of pipelines. ## Principles Each is paired with a falsifiable test — if you can't pass it, the principle is violated, not "applied differently." ### Admission is claims-based, and claims are measured, not folklore A pipeline declares how much memory it needs before it runs; an admission gate uses that claim to decide whether there's room. A claim divorced from measurement is worse than no admission control at all — it creates false confidence. Measured case: an admission gate believed a "10G" declared claim while the unit's actual peak was 3.5G, and separately let a 7GiB claim consume an entire 7G pool outright, starving every other pipeline in that pool for hours despite a code comment promising "one at a time." **Test:** is the declared claim within 1.5× of the unit's measured `MemoryPeak`? If it's off by more than that, the claim is folklore, not a budget. ### Queue, don't skip — with a wait budget under the unit timeout When there's no room, a well-behaved pipeline queues and waits for headroom rather than silently skipping its run. But the wait itself needs a budget, and that budget must be strictly less than the unit's own timeout, with margin. Measured failures at both ends: a 30-minute lock wait under a 20-minute `TimeoutStartSec` got the waiter reaped by systemd with no error signal beyond a bare exit; separately, a 2-hour `TimeoutStartSec` killed a 602-day-long rebuild 3 minutes 46 seconds after its staging phase had actually completed. **Test:** is `wait_budget < TimeoutStartSec - margin` (production margin: 120s)? If not, a queued waiter can be silently reaped by the unit timeout before it ever gets a verdict. ### Headroom-check before claim — never wait while holding one Check for available headroom *before* taking a claim, not after. A pipeline that takes a claim and then blocks waiting for something else can itself be the reason headroom never frees up — the claim-equals-pool-starvation failure above is exactly this: the waiter took the claim first, then had nothing left to give back. **Test:** does the code check headroom and only then acquire, or acquire and then wait? If it waits while holding a claim, that claim is unavailable to everyone, including a retry of the same run. ### Subprocess scopes escape cgroup accounting A `systemd-run --scope` (or any child placed in its own scope) leaves the parent unit's cgroup. The parent's `MemoryMax` and any admission claim sized to the parent silently stop covering that child — memory it uses isn't counted against the budget that was supposed to bound it. This was found via repo comment history describing defensive claim bumps made to compensate. Fix is one of two: size the claim to cover the scope's own `MemoryMax` explicitly, or give the scope its own cap and account for it as a separate budget line item — never assume the parent's claim covers it. **Test:** does killing or capping the parent unit's cgroup actually bound memory used by its `systemd-run --scope` children? If the children have their own cgroup, no — the claim or a scope-level cap must cover them explicitly. ### Capacity ratchet: observe, cap generously, tighten on evidence Day-one caps should be generous headroom, not a guess dialed tight. Tighten only when measured evidence says so, and never while a congestion signal is red. Eligibility is a peak-vs-cap ratio (<40% of cap = flag over-provisioned; >85% = flag under-provisioned) plus a stability window (RSS slope <5%/24h sustained over 72h); congestion indicators — admission-timeout counts, PSI mem-full, rising swap — are the back-pressure signal that overrides a tightening decision even when the ratio looks fine. A deployed weekly ratchet run found a 23× over-provisioned unit (254 MB measured peak against a 6G cap) on its first day. **Test:** run the ratchet check on this unit. Is peak/cap < 0.40 with a stable 72h RSS slope and no congestion signal red? Then it's a tightening candidate — otherwise leave the cap alone. ### A timer start must finish; chunk and persist resume `TimeoutStartSec` is the job's contract with systemd, not a suggestion. A publish that cannot finish inside one start must persist chunk progress and exit 0 after N chunks (or a time budget strictly under the timeout), then continue on the next start. Raising the timeout to "however long history takes" recreates the 602-day rebuild that never finishes. Measured: a monthly gold publish consumed 11.5h CPU, skipped empty chunks as if they were progress, then SIGTERM 15 at the unit timeout with no durable resume pointer. **Test:** kill the unit at 80% of `TimeoutStartSec`. Does the next start resume from the last committed chunk, or restart at chunk 1? If it restarts, the job does not fit one start. ### Empty skip, empty-all, and timeout are different exits - **Empty chunk, more remain:** skip, log counts, continue. Not success for the unit. - **Every chunk empty after a real read:** fail loud (or a named `empty_source` exit that alerts). Isolation of one bad chunk must not green-wash a fully-empty publish. - **Timeout / SIGTERM:** not empty, not success. Do not treat "we skipped a lot" as a finished run. - **Absent source** (path/table missing) is not empty. Hub principle 7. **Test:** if every chunk logs `empty after parse` and the unit still hits `TimeoutStartSec`, is the result `timeout` with a resume pointer, or a green skip? If green, empty was used as progress. ### Long jobs are a catchup lane, not a timer holding a claim A run that needs hours is a catchup/rebuild product: its own unit, its own pool (or a claim TTL that cannot occupy the timer pool overnight), checkpoints, no `Restart=` storm. A timer that holds a 10h admission claim will starve siblings until they `start-limit-hit`. Measured: a publish phase `start-limit-hit` while another claim stayed alive past `LAKE_BUDGET_STALE_SEC` because the pid was still running. **Test:** can a 10h catchup block the hourly timer pool? If yes, it is on the wrong lane or the claim has no TTL distinct from "pid still alive."
From Evan-Kim2028/agent-skills, MIT.
More from Evan-Kim2028/agent-skills
- 0.552score
ebay-listing
Evan-Kim2028
List Pokémon TCG singles on the ekcope-46 eBay store via lake-of-rage ebay-sell (Trading AddFixedPriceItem).
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
data
Evan-Kim2028
Hub for data-engineering pipeline work — storage/ingest/serve choice plus shared discipline (idempotency, incremental-not-full-recompute, schema fencing…
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-product-eval
Evan-Kim2028
Portable methodology for evaluating published estimates, marks, or forecasts against later realized outcomes — frozen snapshots, walk-forward fit vs forecast…
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-api
Evan-Kim2028
Use when consuming HTTP APIs for ingestion (rate limits, backoff, pagination, auth, schema fencing) or serving gold over HTTP (FastAPI + DuckDB, pushdown…
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-semantic-quality
Evan-Kim2028
Portable methodology for semantic (row-truth) data quality — write-time quality attributes, trust ladders, cohort fences, golden entity packs with dual error…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
data-reels
Evan-Kim2028
Principles for high-retention short-form data video (Instagram Reels, TikTok, Shorts) built from measured competitor research on data-viz and stats accounts.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
data-pokemon-tcg-foundations
Evan-Kim2028
Use when working with a trading-card sales tape — any sale-level dataset of collectible card transactions across multiple venues (Pokémon TCG, sports cards…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
data-identity-resolution
Evan-Kim2028
Portable workflow for attaching messy records to canonical entities — evidence ladder, fail-closed assignment, quarantine on strong-vs-weak conflict…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
data-apache-lakehouse
Evan-Kim2028
Use when designing, modifying, or debugging Apache Iceberg lakehouses (bronze/silver/gold medallion specifically on Iceberg) — PyIceberg +…
SkillBFreshness: B★ 1Claude Code +9 - 0.502score
flutter-pro-ux-review
Evan-Kim2028
Production Flutter UX audit: ranked polish findings (dead taps, null text, a11y, keyboard, haptics, layout shift, async/offline honesty, motion, empty states…
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
mobile-app-echarts-visual
Evan-Kim2028
Mobile-readable **product ECharts** (card price/volume, portfolio history, set charts) without desktop regressions — grid gutters, axisLabel floors, legend…
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
browser-verify
Evan-Kim2028
Prove UI in a real browser — Playwright e2e, visual snapshots, axe, and/or Chrome DevTools MCP (live DOM, console, network, performance).
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 29, 2026 (2 months ago)
- Last release
- Jun 22, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Evan-Kim2028/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Evan-Kim2028
- 0.552score
data
Evan-Kim2028
Hub for data-engineering pipeline work — storage/ingest/serve choice plus shared discipline (idempotency, incremental-not-full-recompute, schema fencing…
SkillBFreshness: B★ 1Claude Code +9 - 0.552score
ebay-listing
Evan-Kim2028
List Pokémon TCG singles on the ekcope-46 eBay store via lake-of-rage ebay-sell (Trading AddFixedPriceItem).
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-semantic-quality
Evan-Kim2028
Portable methodology for semantic (row-truth) data quality — write-time quality attributes, trust ladders, cohort fences, golden entity packs with dual error…
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-product-eval
Evan-Kim2028
Portable methodology for evaluating published estimates, marks, or forecasts against later realized outcomes — frozen snapshots, walk-forward fit vs forecast…
SkillBFreshness: B★ 1Claude Code +9 - 0.548score
data-api
Evan-Kim2028
Use when consuming HTTP APIs for ingestion (rate limits, backoff, pagination, auth, schema fencing) or serving gold over HTTP (FastAPI + DuckDB, pushdown…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
data-reels
Evan-Kim2028
Principles for high-retention short-form data video (Instagram Reels, TikTok, Shorts) built from measured competitor research on data-viz and stats accounts.
SkillBFreshness: B★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get data-pipeline-operations running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
data-pipeline-operations skill. Agent Mart. https://agentmart.dev/skills/evan-kim2028-data-pipeline-operations (last updated 2026-10-24)