# harvard-artifacts-etl-analytics

A skill that walks your agent through building an ETL pipeline and an analytics dashboard on Harvard Art Museums API data. Useful when you want a set route from API calls to Streamlit charts.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2000 installs · ★ 5
- Author: reason-machines
- License: LicenseRef-Unknown · policy=link-only · description only; the file stays with the author
- Source: https://github.com/reason-machines/data-skills/tree/HEAD/skills/harvard-artifacts-etl-analytics/SKILL.md
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/skills/harvard-artifacts-etl-analytics

## What it does

The skill lays out the whole data path: pulling objects from the Harvard Art Museums API page by page, flattening nested JSON into three normalized tables, loading them into MySQL or TiDB Cloud, then querying the result. Code samples use `requests`, `pandas` and `mysql-connector-python`. The schema is fixed up front — `artifactmetadata`, `artifactmedia` and `artifactcolors`, joined by `artifact_id`.

You need a `HARVARD_API_KEY` and database credentials before anything runs. Host, port, user, password and database name go into `.env`. Requests to `https://api.harvardartmuseums.org/object` fail without the key, so registering on the museum site comes first. The dashboard starts with `streamlit run app.py` and serves at `http://localhost:8501`.

More than twenty ready-made analytical SQL queries ship with the skill, plus Plotly charts. Your agent leans on those templates when you ask for collection metrics by culture or century.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill harvard-artifacts-etl-analytics -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/harvard-artifacts-etl-analytics/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/harvard-artifacts-etl-analytics/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill harvard-artifacts-etl-analytics -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/harvard-artifacts-etl-analytics/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill harvard-artifacts-etl-analytics -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/harvard-artifacts-etl-analytics/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/data-skills harvard-artifacts-etl-analytics
```

2. **Manually: put the files in place**
- File: `.github/skills/harvard-artifacts-etl-analytics/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill harvard-artifacts-etl-analytics -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/reason-machines/data-skills --path skills/harvard-artifacts-etl-analytics
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/harvard-artifacts-etl-analytics/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill harvard-artifacts-etl-analytics -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/reason-machines/data-skills/tree/HEAD/skills/harvard-artifacts-etl-analytics/SKILL.md

## When to use it
- pull objects from the Harvard Art Museums API across pages
- split nested JSON into metadata, media and color tables
- load normalized rows into MySQL or TiDB Cloud
- run ready-made SQL queries for collection metrics
- build a Streamlit dashboard with Plotly charts

## Example prompts
- Build an ETL pipeline for Harvard Art Museums API data with paginated extraction
- Split the API response into `artifactmetadata`, `artifactmedia` and `artifactcolors` tables
- Create a Streamlit dashboard with Plotly charts by culture and century

## Similar
- [xlsx](https://affpapa.org/en/nevibecode/skills/xlsx.md) — skill · 187223 installs
- [google-agents-cli-observability](https://affpapa.org/en/nevibecode/skills/google-agents-cli-observability.md) — skill · 511300 installs
- [caveman-evidence-review](https://affpapa.org/en/nevibecode/skills/caveman-evidence-review.md) — skill · 104500 installs
- [migration](https://affpapa.org/en/nevibecode/skills/migration.md) — skill · 103900 installs
- [performance-optimization](https://affpapa.org/en/nevibecode/skills/performance-optimization.md) — skill · 65200 installs
- [supabase](https://affpapa.org/en/nevibecode/skills/supabase.md) — skill · 8 installs

From the same set: [reason-machines/data-skills](https://affpapa.org/en/nevibecode/by/reason-machines/data-skills.md) — 31 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
