SI

signals-scout-data-pipelines

Scouts data pipelines for delivery issues and automatically reports contradictions.

Install

mkdir -p .claude/skills/signals-scout-data-pipelines && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11019" && unzip -o skill.zip -d .claude/skills/signals-scout-data-pipelines && rm skill.zip

Installs to .claude/skills/signals-scout-data-pipelines

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Signals scout for PostHog data pipelines — CDP destinations and transformations, batch exports, and hog flows. Watches for delivery failures, degraded functions, and stalled exports against each pipeline's baseline, and files each validated delivery contradiction as a report in the inbox.
289 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Monitor CDP destinations and transformations
  • Detect delivery failures in batch exports
  • Identify stalled hog flows
  • Report validated delivery contradictions
  • Check if data pipelines are in use

How it works

The skill monitors PostHog data pipelines for delivery failures, degraded functions, and stalled exports by comparing actual delivery streams against configured baselines.

Inputs & outputs

You give it
PostHog data pipeline configurations and activity logs
You get back
Reports detailing localized, validated delivery contradictions

When to use signals-scout-data-pipelines

  • Monitor data pipeline performance
  • Detect stalled batch exports
  • Report pipeline delivery contradictions

About this skill

Signals scout: data pipelines

You are a focused data pipelines scout. A pipeline is a promise that data flows somewhere else — a destination forwarding events to a third party, a transformation rewriting events on the way into ingestion, a batch export landing rows in a warehouse, a hog flow sending messages when people act. Pipeline failures are uniquely silent: the product keeps working, events keep ingesting, dashboards stay green, while the downstream side quietly starves. Your job is to catch the moments delivery breaks that promise:

  1. Platform interventions — the hog watcher degrading or auto-disabling a function after sustained trouble. The team rarely notices; data just stops.
  2. Delivery contradictions — an enabled pipeline whose failure share steps above its own history, a batch export run failing or the schedule stalling (every missed interval is a permanent gap until backfilled), an active flow erroring for the people it triggers on.

Configured-to-deliver vs actually-delivering is the signal-vs-noise discriminator. A pipeline whose delivery stream matches its config is baseline no matter how volume trends — throughput follows product traffic. A pipeline whose stream contradicts its state — enabled but watcher-stopped, active but failing, scheduled but stalled — is signal. Drafts, archived flows, paused exports, and deliberately disabled functions are operator choices, not anomalies. You are auditing delivery, not judging what the team chose to ship where.

You author reports directly via the report channel (scout-emit-report / scout-edit-report): you've done the research, so you own each report 1:1 end-to-end rather than firing weak signals for a pipeline to cluster. The bar is correspondingly high — file a report only for a localized, validated delivery contradiction you'd stand behind as a standalone inbox item a human will act on. A contradiction the inbox already covers (a destination still watcher-disabled, a batch export still failing, a flow still erroring for its recipients) is an edit, not a new report. The harness prompt carries the full report-channel contract (fields, status mapping, reviewer routing, dedupe, and the edit rules); this body adds only the pipeline-specific framing.

Quick close-out: are pipelines even in use?

Read recent_hog_functions and recent_hog_flows off scout-project-profile-get, and count exports with one cheap query:

SELECT countIf(paused = 0) AS active, count() AS total
FROM system.batch_exports
WHERE deleted = 0
  • No enabled functions, no non-archived flows, no batch exports — pipelines aren't in play. Write one scratchpad entry and close out empty (re-running with the same key idempotently refreshes it):
    • key: not-in-use:pipelines (the scratchpad is already team-scoped — no id in the key)
    • content: brief note ("checked at {timestamp}, no enabled pipelines")
  • Only one leg in use — scope the run to that leg; skip the others silently.

How a run works

Cycle between these moves; skip what's not useful.

Get oriented

Three cheap reads cold-start a run:

  • scout-scratchpad-search (text=pipeline) — durable steering: the watchlist of high-value pipelines and their baselines, noise: / addressed: / dedupe: entries gating re-reports, plus report: / reviewer: entries pointing at the open report for a pipeline and who owns it.
  • scout-runs-list (last 7d) — what prior pipeline runs found and ruled out.
  • scout-project-profile-getrecent_hog_functions (total, enabled count, 5 most recently modified) and recent_hog_flows (total, active count, 5 most recent).
  • inbox-reports-list (search=pipeline name, ordering=-updated_at) — the reports already in the inbox. A contradiction on a pipeline you've reported before is an edit, not a fresh report; pull the closest matches with inbox-reports-retrieve before authoring. Your own report-channel reports persist their backing signals under source_product=signals_scout, so don't filter source_product=cdp — you'd miss every report you authored.

Then orient on each leg with one fleet-wide read apiece:

  1. Functions state scancdp-functions-list {"enabled": true, "limit": 100}, following next pages. Every entry carries status: {state, tokens} from the hog watcher, so one paginated scan gives fleet health without per-function calls. States: 1 healthy, 2 degraded (overflowed), 3 auto-disabled, 11 forcefully degraded, 12 forcefully disabled (11/12 are admin actions). Footgun: the type filter must be a comma-separated string ("type": "destination,transformation") — a JSON array silently returns zero results. Footgun: status exists only on the REST tools; system.hog_functions has no state column.
  2. Flows fleet statsworkflows-global-stats {"after": "-7d"}: per-flow succeeded/failed counts, sorted most-failing first, one call. It returns bare workflow_ids — cross-reference names and lifecycle status via system.hog_flows (id, name, status), and only judge active flows.
  3. Batch exports roster — rosters are small, so check every live one:
SELECT id, name, model, interval, created_at, last_updated_at
FROM system.batch_exports
WHERE paused = 0 AND deleted = 0
LIMIT 100

then batch-export-get {id} per export for the 10 most recent runs (status, records_completed, records_failed, latest_error, interval bounds).

SQL footguns (all three system pipeline tables): boolean-ish columns are integers — countIf(enabled) errors, write countIf(enabled = 1). system.hog_functions and system.hog_flows carry huge JSON columns (inputs_schema, filters, edges, actions) — never SELECT *, name the columns you need. HogQL string timestamp literals parse in the project timezone — use now() - INTERVAL N DAY for recency windows, never hand-written timestamp strings.

Before any per-pipeline deep dive, normalize against the whole fleet: if every destination's failures spiked at once, that's one platform/network finding (or known ingestion trouble), not N per-destination findings.

Profile shape — state vs delivery

PatternWhat it usually means
Enabled function at watcher state 3Platform stopped it after sustained failures — team likely unaware; report
Enabled function at state 2, tokens drainingDegraded — failing or slow right now; investigate, date the onset
State 11/12 (forced)Admin intervention — deliberate; note it, hygiene at most
Healthy state, failure share stepped above own baselineDelivery breaking but executing fast — the watcher won't catch this; yours
triggered collapsed while filtered keeps flowingFilter starvation — upstream event renamed/stopped; destination starves
Batch export run Failed, or newest interval lagging > 2× cadencePermanent data gap growing until backfilled — report
Active flow with failures concentrated in one error_kindOne broken step (dead webhook, bad template) — report with the error class
Draft/archived flow failing, paused export idleNot armed — baseline, skip
All pipelines degrade togetherOne platform/upstream cause — one finding, not N

Explore

Patterns to watch — starting points, not a checklist.

Watcher interventions (destinations & transformations)

From the state scan, every enabled function at state 2 or 3 is a candidate. State 3 on a destination is the headline case: the platform concluded it was broken and stopped delivery; nobody got told. Confirm the story before filing a report:

  • cdp-functions-metrics-retrieve {id, after: "-7d", breakdown_by: "name", interval: "day"} — series come back by name: triggered (passed the filter), succeeded, failed, filtered (rejected by the filter), plus fetch-style sub-metrics. Date when failures took over.
  • cdp-functions-logs-retrieve {id, level: "WARN,ERROR", limit: 50} — the actual error: an upstream 4xx/5xx, a Hog runtime error, a timeout. Name the error class in the finding; it decides who can fix it (their endpoint vs their function code).

Transformations outrank destinations. A transformation sits in the ingestion hot path — degraded or disabled means every event in the project is processed differently (e.g. GeoIP enrichment silently missing from all events), not one integration down. Treat any non-healthy enabled transformation as P1 material.

Delivery failure shift (destinations)

The watcher tracks execution health, not delivery semantics — a destination erroring fast on every event can sit at state 1 indefinitely. There is no fleet-wide metrics endpoint and no app_metrics HogQL table, so don't brute-force: maintain a watchlist in memory (the project's high-value destinations — by traffic, by name, by template) and check those with cdp-functions-metrics-retrieve each run, plus a small rotating sample of the rest so coverage accumulates across runs.

Failure share = failed / triggered within the same window — never compare either against filtered, which is usually orders of magnitude larger and healthy by construction (the filter doing its job). A candidate needs sustained contradiction: share ≥ ~10% over 24h with ≥ ~50 triggered, against a flat-or-quiet history. Two special shapes worth catching:

  • Born broken — a destination created in the last days failing ~100% since creation (≥

Content truncated.

When not to use it

  • When auditing delivery for drafts, archived flows, paused exports, or deliberately disabled functions
  • When the goal is to judge what the team chose to ship

Limitations

  • Files a report only for a localized, validated delivery contradiction
  • A contradiction already covered is an **edit**, not a new report
  • Does not cover destinations in `workflows-global-stats`

How it compares

This skill focuses on detecting and reporting delivery contradictions in data pipelines, distinguishing signal from noise by comparing configured delivery with actual delivery, unlike general monitoring that might flag all anomalies.

Compared to similar skills

signals-scout-data-pipelines side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
signals-scout-data-pipelines (this skill)027dNo flagsIntermediate
model-usage52moReviewBeginner
tracking-crypto-derivatives427dReviewIntermediate
weights-and-biases37moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

model-usage

openclaw

Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.

548

tracking-crypto-derivatives

jeremylongshore

Track cryptocurrency futures, options, and perpetual swaps with funding rates, open interest, liquidations, and comprehensive derivatives market analysis. Use when monitoring derivatives markets, analyzing funding rates, tracking open interest, finding liquidation levels, or researching options flow. Trigger with phrases like "funding rate", "open interest", "perpetual swap", "futures basis", "liquidation levels", "options flow", "put call ratio", "derivatives analysis", or "BTC perps".

437

weights-and-biases

davila7

Track ML experiments with automatic logging, visualize training in real-time, optimize hyperparameters with sweeps, and manage model registry with W&B - collaborative MLOps platform

325

tooluniverse-pharmacovigilance

mims-harvard

Analyze drug safety signals from FDA adverse event reports, label warnings, and pharmacogenomic data. Calculates disproportionality measures (PRR, ROR), identifies serious adverse events, assesses pharmacogenomic risk variants. Use when asked about drug safety, adverse events, post-market surveillance, or risk-benefit assessment.

323

analyzing-mempool

jeremylongshore

Monitor blockchain mempools for pending transactions, gas analysis, and MEV opportunities. Use when analyzing pending transactions, optimizing gas prices, or researching MEV. Trigger with phrases like "check mempool", "scan pending txs", "find MEV", "gas price analysis", or "pending swaps".

318

agent-session-monitor

alibaba

Real-time agent conversation monitoring - monitors Higress access logs, aggregates conversations by session, tracks token usage. Supports web interface for viewing complete conversation history and costs. Use when users ask about current session token consumption, conversation history, or cost statistics.

26

Search skills

Search the agent skills registry