| type | skill |
| lifecycle | stable |
| inheritance | inheritable |
| name | datasource-connectors |
| description | Ingestion patterns for CSV, JSON, REST API, SQL, Excel, and Parquet -- guides an LLM through loading data from any common source |
| tier | standard |
| applyTo | **/*data*,**/*ingest*,**/*connect*,**/*csv*,**/*json*,**/*sql*,**/*excel*,**/*parquet*,**/*api* |
| currency | 2026-08-15T00:00:00.000Z |
| lastReviewed | 2026-08-15T00:00:00.000Z |
Datasource Connectors
Guide the user through loading data from any common source into a working dataset.
This module is a decision framework, not a library. It tells the LLM what to ask,
what to watch for, and how to handle each format's quirks.
When to Use
- The brief names a data source that is not yet loaded
- The user says "the data is in X" where X is a file, database, or API
- The orchestrator's plan includes an Ingest step
When to Skip
- Data is already loaded (inline table, prior step output, user pasted it)
- The brief says "data is pre-loaded" or "use this dataframe"
Connector Selection
Ask the user what format the data is in, or infer from the path/URL:
| Signal | Connector |
|---|
.csv, .tsv, .txt (tabular) | CSV |
.json, .jsonl, .ndjson | JSON |
http://, https:// + returns JSON/XML | REST API |
Connection string, .sql, database name | SQL |
.xlsx, .xls | Excel |
.parquet, .arrow | Parquet |
If ambiguous, ask. Do not guess the format.
CSV / TSV
What to ask
- Does the file have a header row? (default: yes)
- What is the delimiter? (auto-detect: comma, tab, semicolon, pipe)
- What is the encoding? (default: UTF-8; watch for: Latin-1, Windows-1252)
Quirks to handle
| Problem | Detection | Fix |
|---|
| Wrong delimiter | First row has one column | Try tab, semicolon, pipe |
| Encoding garbled | Non-ASCII chars show as ? or é | Re-read as Latin-1 or Windows-1252 |
| Trailing commas | Row has one extra empty column | Strip trailing delimiter |