Data Pipelines logo

Data Pipelines

Community
nahid-sparktales
data-pipelines

Build and repair batch and streaming pipelines that can be run twice without lying — lineage, event-time windowing, late arrivals, re-runnable writes and bounded backfills. Use when writing or fixing a pipeline, scheduled transform or job that produces data someone reads, when a run dropped or duplicated rows, or when planning a backfill. Not for designing the destination schema or its migrations, not for the standing assertions that guard the data afterwards (data-quality), and not for interpreting what the numbers mean.

Overview

Publishernahid-sparktales
Repositoryagent-dispatcher
Skill namedata-pipelines
Stars
58
Forks
5
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by nahid-sparktales on GitHub. Read the source before you install it.

Installation

Install the Data Pipelines AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/nahid-sparktales/agent-dispatcher/tree/main/skills/database/data-pipelines
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/nahid-sparktales/agent-dispatcher.git /tmp/agent-dispatcher
mkdir -p .claude/skills
cp -r /tmp/agent-dispatcher/skills/database/data-pipelines .claude/skills/data-pipelines
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Data Pipelines in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Data Pipelines on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Data Pipelines is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Data pipelines

Exit code zero says a process ended. It does not say the partition is complete, that the rows match the source, or that running it again will not double every total downstream. Most pipeline damage is done by a rerun that looked like a repair.

When this fires

A pipeline, scheduled transform, ingestion job or notebook-promoted-to-job is being written, changed or debugged; or a backfill is being planned. It fires when a run dropped, duplicated or reshaped rows. It does not fire for a code defect unrelated to data movement, for the destination schema's design, or for the scheduler platform itself.

Procedure

  1. Trace lineage before editing anything. Every upstream input, each transform step, the destination tables, and everything that reads them — reports, dashboards, downstream jobs, feature tables, exports. The blast radius is what you enumerate, not what you assume. Name the readers you found and say plainly which you could not enumerate.

  2. Write down the current contract, even if nobody else has. The grain (one row per what), the partition or batch key, the expected volume per window, the freshness the consumer relies on, and the existing duplicate and late-arrival behaviour. Where you inferred this from the data rather than from documentation, say it is inferred.

  3. Separate the three clocks and pick one. Event time is when the thing happened, ingestion time when it landed, processing time when the job touched it. Partition and window on event time; reprocessing changes the other two, and any result that depends on them changes when you rerun. Record the timezone and whether the boundary is inclusive — an off-by-one-hour partition is indistinguishable from data loss in a count.

  4. Say what closes a window. A window that never closes never emits; one that closes too early drops the stragglers. Fix an allowed lateness against observed arrival lag, not a round number, and give data that arrives after the boundary a defined destination: reprocess the window, route it to a late-arrival table, or drop it with a counter. A silent drop is the default nobody chose deliberately.

  5. Make the write re-runnable. Replace the partition, or merge on a deterministic business key derived from the input — never blind append. Then state in one sentence what a second run of the same input does. If the answer is "duplicates", the pipeline is not finished. Deriving the output key from wall-clock time or a random id makes a rerun a new row every time.

  6. Bound the unit of work to one partition, date or batch, so a failure retries a slice instead of the history. Persist the cursor or high-water mark where it survives the process dying; in-memory progress is no progress.

  7. Reproduce a reported problem on one bounded slice, not by rerunning the pipeline. Compare that slice to the source on row count, distinct key count and the sums of additive measures, then walk the transforms until the step where they diverge. A rerun that appends can hide the original loss behind fresh duplicates and destroys the evidence.

  8. Keep the transform separable from its I/O so it can be exercised on a fixture with known input and known expected output. A transform that only runs under the scheduler cannot be tested, only observed in production. If the work arrived as a notebook, restructure it to run top to bottom in a fresh kernel — out-of-order state is the standing hazard, and a notebook that works only in the current session is not a job.

  9. Plan a backfill as its own change. Which windows, in what order, what the write does to partitions that already hold rows, and what a consumer reads while it is half-done. Reconcile each window against the source as you go rather than at the end. Write to a separate target and swap where the destination supports it. Overwriting historic partitions in a table people are reading is destructive and outward-facing: present the window list, the overwrite semantics and the reconciliation plan, and ask before running it.

  10. Leave one standing assertion behind — the freshness or volume check that fails when this stops working. Where it belongs and how it is written is data-quality; that it exists is this procedure's responsibility.

  11. Report with the words kept apart — written, executed on a slice, backfilled, reconciled, deployed. This procedure exists partly because they get conflated, and "the job ran" is the weakest of them.

Checklist

  • Lineage traced to every reader, with the unenumerated ones named
  • Grain, partition key, expected volume and freshness written down
  • Event time chosen as the partition clock; timezone and boundary stated
  • Allowed lateness set, and late data given a destination other than silence
  • Second-run behaviour stated in one sentence, and it is not "duplicates"
  • Work bounded per partition, with a durable cursor
  • Problem reproduced on a slice and compared against the source
  • Transform runnable on a fixture outside the scheduler
  • Backfill windows reconciled individually; destructive overwrite left for the user to approve
  • One standing assertion in place
  • Windows still unreconciled named, not rounded away

Failure handling

  • Counts disagree with the source — that is the result. Report the window and the comparison query. Do not rerun over the top to make the numbers agree; that converts a known loss into an unknown mixture of loss and duplication.
  • A run half-completed — resume from the cursor. With no cursor you cannot distinguish done windows from undone ones without a full comparison; say that rather than rerunning blind.
  • Late data keeps arriving after the window closes — the lateness bound is wrong, not the data. Measure the actual arrival lag distribution before moving the bound.
  • The slice reconciles but the full run does not — something is scale- or ordering-dependent. Do not extrapolate the slice's pass; report it as covering the slice only.
  • The source itself is unreadable or has changed shape — stop. A pipeline reconciled against a source you cannot read is reconciled against nothing.

Evidence to report

The lineage, including readers you could not enumerate. The contract as you found it and as you left it. Per window touched: source count, output count, the additive sums compared, and the reconciliation query verbatim. What a second run does. The backfill windows completed, and those still outstanding. The assertion left behind, and what it fires on. Then the explicit list of windows and consumers not checked.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Data Pipelines AI skill do?

Build and repair batch and streaming pipelines that can be run twice without lying — lineage, event-time windowing, late arrivals, re-runnable writes and bounded backfills. Use when writing or fixing a pipeline, scheduled transform or job that produces data someone reads, when a run dropped or duplicated rows, or when planning a backfill. Not for designing the destination schema or its migrations, not for the standing assertions that guard the data afterwards (data-quality), and not for interpreting what the numbers mean.

Why use Data Pipelines on TypingMind?

Because you install it once and use it with any model. Data Pipelines is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Data Pipelines in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/nahid-sparktales/agent-dispatcher/tree/main/skills/database/data-pipelines. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Data Pipelines?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Data Pipelines?

As many as you like. As long as a model supports skills, you can use Data Pipelines with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Data Pipelines AI skill free?

Yes. It is published on GitHub by nahid-sparktales under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇