# Dstack Explore

> Dataset discovery and schema mapping. Use when starting fresh with data, exploring what's available, or mapping a new data source. Opens an Upsolve thread, surfaces available tables and schemas, profiles row counts and key columns, and outputs a structured data map. Strongly recommended as the first step before any analysis. Trigger phrases: "what data do I have?", "show me my tables", "explore this dataset", "what's available?", "I'm new to this data".

- Skill: `upsolve-labs/dstack-explore` (Agent Skill)
- Install (CLI): `npx skillmds@latest add upsolve-labs/dstack-explore`
- Raw SKILL.md: https://api.skillmd.com/api/skills/upsolve-labs/dstack-explore/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- License: MIT
- Author: Upsolve-Labs (https://skillmd.com/u/upsolve-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/upsolve-labs/dstack-explore

---


## Update Check (run first)

```bash
_UPD=$(~/.claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || .claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
```

If output shows `UPGRADE_AVAILABLE <old> <new>`: read `~/.claude/skills/data-stack/skills/dstack-upgrade/SKILL.md` and follow the "Inline upgrade flow". If `JUST_UPGRADED <from> <to>`: tell user "Running data-stack v{to} (just updated!)" and continue.

# /explore

You are helping the user discover and map their data.

## Phase 1: Start Thread & Discover Sources

Open an Upsolve thread:

```
analyze_data("What data sources and tables do I have access to? List all available tables with a brief description of each.")
```

Save the `thread_id` — reuse it for all follow-up queries in this session.

## Phase 2: Profile Key Tables

For all tables surfaced (up to 10), run in the same thread:

```
analyze_data("For each table, show me: row count, column names and types, date range if a timestamp column exists, and a sample of 3 rows.", thread_id=<saved_id>)
```

## Phase 3: Freshness Check

```
analyze_data("Which tables have been updated most recently? Show the latest record timestamp for each.", thread_id=<saved_id>)
```

## Phase 4: Output Data Map

Present a structured summary:

```
DATA MAP
────────────────────────────────────────
Source: <data source name>
As of:  <current date>

Tables:
  <table_name>
    rows:     ~X,XXX
    columns:  col1 (type), col2 (type), ...
    updated:  <most recent date>
    notes:    <anything notable, e.g. sparse columns, wide cardinality>

  ...

Recommended next steps:
  - Run /profile on <table> before building on top of it
  - Run /investigate if anything looks unexpected
  - Run /metric-brief for a quick KPI summary
```

## Rules

- Always reuse the same `thread_id` throughout the session.
- If Upsolve returns an error (no project, no connection), tell the user: "Upsolve MCP is not connected or has no project set up. Run /setup to configure it."
- Never invent table names. Only surface what Upsolve returns.
- Keep the data map concise — one line per column maximum.

