agentsclimarketplace

Arch

Skill DKSang/DESKILL/skills/arch

Design the data pipeline architecture and choose exactly one tool per category. Use this skill when the user asks 'what architecture should I use', 'ETL or ELT?', 'which tools should I pick', 'design my data platform', 'how should I structure my pipeline', 'medallion or lakehouse?', 'Airflow or Prefect?', or has source contracts ready and needs to commit to a stack before writing code.From its SKILL.md

Install
npx -y skills add DKSang/DESKILL --skill arch

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.4 KB, as published. Nobody here has run it

Skill: Design Pipeline Architecture

Purpose

Decide how data flows from source to serving layer, with exactly one tool per category. Ambiguity at this step is the #1 reason DE projects get stuck midway.

When to stop at this skill

Only move to /schema when docs/architecture.md has: 1 pattern, 1 tool/category, 1 diagram, naming convention, and a documented scale assumption.

Steps

Step 1 — Choose a layering pattern

Pick 1 pattern based on requirements from docs/business_problem.md:

PatternChoose when
Medallion (Bronze/Silver/Gold)Default — clean separation of raw/cleaned/business-ready
ELTModern cloud DW, want to keep raw data, transform in-warehouse
ETLLegacy system, need heavy pre-processing before loading
KappaStream-only, no batch needed
LakehouseNeed ACID on object store, unified batch + stream

For portfolio projects: Medallion is the default. Only choose otherwise if there's a specific reason from the business problem.

Step 2 — Pick 1 tool per category

For each category, choose exactly 1 tool and document the reason:

CategoryCommon choicesSelection criteria
OrchestrationAirflow / Dagster / PrefectAirflow: large community, popular in job market. Dagster: asset-based, good for lineage. Prefect: modern API, easy local dev
Object storageMinIO / S3 / GCS / ADLSMinIO for local (S3-compatible). Cloud bucket if deploying to cloud
Transformationdbt / Spark / pandas/polarsdbt: SQL + version control. Spark: large-scale distributed. pandas/polars: small-medium, Python-first
Query engine / DWDuckDB / Snowflake / BigQueryDuckDB: local/free, excellent analytics. Cloud DW if scale or portfolio target requires it
ContainerizationDocker ComposeAlways use Docker Compose for local reproducibility

Rule: If unsure → pick the most popular option on the job market for your domain. Don't over-optimize early.

Step 3 — Draw a data flow diagram

Draw using Mermaid (or ASCII) showing the full path:

[Source A] → [Ingestion] → [Bronze/Raw] → [Transform] → [Silver] → [Gold] → [Serving]
[Source B] ↗                  (storage)      (tool)      (storage)  (storage)  (dashboard/API)

Every arrow/box must have a specific tool name, never leave it blank.

Step 4 — Define naming conventions

Commit to these early, don't defer them. Example:

Bronze:  raw.<entity>_raw           (or /data/bronze/<entity>/)
Silver:  staging.stg_<entity>       (or /data/silver/<entity>/)
Gold:    mart.fct_<entity>_<grain>  (or /data/gold/<entity>/)
         mart.dim_<entity>

Step 5 — Document scale assumptions

Document current scale — this justifies every tool choice:

"Pipeline processes ~[X] MB/day on a single machine — sufficient justification for DuckDB/pandas over Spark."

If scale changes later → revisit this step, don't swap tools without acknowledging the shift.

Output

Create docs/architecture.md:

# Architecture — [Project Name]

## Pattern
[Medallion / ELT / ETL / Kappa / Lakehouse] — reason for choosing this pattern

## Scale Assumption
[X MB/GB per day, single machine / distributed, X sources]

## Tool Stack

| Category | Tool | Reason |
|----------|------|--------|
| Orchestration | [tool] | [reason] |
| Object storage | [tool] | [reason] |
| Transformation | [tool] | [reason] |
| Query engine | [tool] | [reason] |
| Containerization | Docker Compose | Reproducibility |

## Data Flow

[Mermaid diagram or ASCII art]

```mermaid
graph LR
    A[Source 1] --> B[Ingestion]
    C[Source 2] --> B
    B --> D[(Bronze Storage)]
    D --> E[Transform - tool]
    E --> F[(Silver)]
    F --> G[Gold Models]
    G --> H[Dashboard/API]

Naming Convention

  • Bronze: raw.<entity>
  • Silver: stg_<entity>
  • Gold: fct_<entity>_<grain>, dim_<entity>

Layer Contracts

LayerAllowed transformationsOutput guarantees
BronzeNone — raw as-isOriginal structure + metadata tags
SilverClean, dedupe, type castNo duplicates, no nulls on PK
GoldAggregation, business logicAnswers analytical questions at correct grain

Failure Modes

  • [List at least 2-3 known failure modes and how to handle them]

## DONE WHEN

- [ ] 1 pattern chosen with a reason
- [ ] 1 tool per category, no "TBD"
- [ ] Mermaid/ASCII diagram has specific tool names at each step
- [ ] Naming convention committed
- [ ] Scale assumption clearly documented

## Next Step

Previous: `/sources`. After done → run `/schema` to design your DW schema (Fact/Dimension tables).

## References

- Template: `skills/arch/references/patterns.md` — detailed ETL/ELT/Lambda/Kappa/Lakehouse tradeoffs
- Phase deep-dive: `phases/phase-2-architecture.md`
- Previous skill: `skills/sources/SKILL.md`
- Next skill: `skills/schema/SKILL.md`

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.