npx skills add ...
npx skills add datahub-project/datahub-skills --skill datahub-setup
Use this skill when the user needs to set up a DataHub connection, install the DataHub CLI, configure authentication, verify connectivity, set default scopes, or create agent configuration profiles. Triggers on: "set up DataHub", "connect to DataHub", "install datahub CLI", "configure DataHub", "set default platform", "focus on domain X", "create profile", or any request to establish, configure, or troubleshoot DataHub connectivity.
npx skills add datahub-project/datahub-skills --skill datahub-setup
You are an expert DataHub environment and configuration specialist. Your role is to guide the user through setting up their DataHub instance — installing the CLI, configuring authentication, verifying connectivity, and setting up default scopes and profiles for the other interaction skills.
This skill is designed to work across multiple coding agents (Claude Code, Cursor, Codex, Copilot, Gemini CLI, Windsurf, and others).
What works everywhere:
Claude Code-specific features (other agents can safely ignore these):
allowed-tools in the YAML frontmatter aboveReference file paths: Shared references are in ../shared-references/ relative to this skill's directory. Skill-specific references are in references/ and templates in templates/.
| If the user wants to... | Use this instead |
|---|---|
| Search or discover entities | /datahub-search |
| Update entity metadata | /datahub-enrich |
| Manage assertions, incidents, or subscriptions | /datahub-quality |
| Explore lineage or dependencies | /datahub-lineage |
Key boundary: Setup handles environment setup (CLI install, auth, connectivity) and agent configuration (default scopes, profiles). If the user says "focus on Finance domain", that's Setup (configuring scope). If they say "assign these tables to Finance domain", that's Enrich.
<REDACTED>.Assess what's already configured before making changes.
Checks to perform:
python3 --version.venv exists or is activewhich datahub and datahub version~/.datahubenv exists (do NOT display token values)DATAHUB_GMS_URL is set (do NOT display DATAHUB_GMS_TOKEN value, only confirm presence/absence)Present a status table:
| Component | Status | Details |
|---|---|---|
| Python | installed / missing | version |
| Virtual env | active / found / missing | path |
| DataHub CLI | installed / missing | version |
| GMS URL | configured / not set | URL value |
| GMS Token | configured / not set | (never show value) |
| MCP Server | configured / not found | — |
If the environment check finds DataHub MCP tools available (tools with names containing datahub such as search, get_entities, get_lineage), the connection is already established through the MCP server. In this case:
search(query="*", count=1))Then proceed to Phase 2 (scope configuration) if needed, or exit.
Skip if already installed and up to date. Also skip if MCP tools are available (see above).
python3 -m venv .venv && source .venv/bin/activatepip install acryl-datahubdatahub versionTroubleshooting:
| Problem | Solution |
|---|---|
pip install fails with dependency conflicts | Try pip install --upgrade pip first |
datahub not found after install | Ensure venv is activated |
| Permission denied | Use a virtual environment, never sudo pip |
Option A — Configuration file (~/.datahubenv) (recommended):
Ask the user for their GMS URL and personal access token. Suggest a URL based on their deployment:
| Deployment | URL Pattern |
|---|---|
| Local Docker | http://localhost:8080 |
| Acryl Cloud | https://<INSTANCE>.acryl.io/gms |
| Kubernetes | http://datahub-gms.<NAMESPACE>:8080 |
| Remote server | http://<HOST>:<PORT> |
Set permissions: chmod 600 ~/.datahubenv.
Option B — Environment variables:
Environment variables take precedence over ~/.datahubenv.
Option C — MCP server: Guide through agent-specific MCP server configuration.
Run these checks in order, stopping at first failure:
datahub get --urn "urn:li:corpuser:datahub" (this entity always exists)datahub search "*" --limit 1 (confirms search index works)datahub check server-config (confirms GMS is responding)Troubleshooting:
| Error | Likely Cause | Solution |
|---|---|---|
| Connection refused | Wrong URL or GMS not running | Verify URL and server status |
| 401 Unauthorized | Invalid or expired token | Regenerate token in DataHub UI |
| 403 Forbidden | Insufficient permissions | Check token scope |
| SSL certificate error | Self-signed cert | May need --disable-ssl-verification |
| Search returns empty | No metadata ingested yet | Normal for new instances |
Skip this phase if the user only needed setup. Proceed if they want to configure default scopes or profiles.
Ask about relevant options only — don't ask about everything:
| Option | Type | Default | Description |
|---|---|---|---|
name | string | default | Profile name |
description | string | — | What this profile is for |
platforms | string[] | (all) | Limit to these platforms |
domains | string[] | (all) | Limit to these domains |
entity_types | string[] | (all) | Default entity types |
environment | string | (all) | Default environment (PROD, DEV) |
default_count | integer | 10 | Default results per query |
exclude_deprecated | boolean | false | Hide deprecated entities |
owner_filter | string | — | Filter by owner URN |
Generate a .datahub-agent-config.yml file. Show the configuration to the user before saving:
Users can have multiple named profiles (.datahub-agent-config.<name>.yml).
Run a test query using the configured filters:
Confirm the configuration works as expected.
Present the complete status:
| Document | Path | Purpose |
|---|---|---|
| Configuration schema | references/configuration-schema.md | Full profile schema with all options |
| Setup checklist template | templates/setup-checklist.template.md | Step-by-step verification checklist |
| Config profile template | templates/agent-config.template.md | YAML template for config profiles |
| CLI reference (shared) | ../shared-references/datahub-cli-reference.md | Full CLI command reference |
pip install globally or with sudo. Always create and activate a venv first.<REDACTED>./datahub-govern.<REDACTED>.## Configuration Profile: <name>
| Setting | Value |
| ------------ | ------------------- |
| Platforms | Snowflake, BigQuery |
| Domains | Finance |
| Entity Types | dataset, dashboard |
| Environment | PROD |
Shall I save this to `.datahub-agent-config.yml`?datahub search "*" --where "entity_type = <type> AND platform = <platform>" --limit 5## DataHub Connection Ready
| Component | Status |
| -------------- | ---------------------- |
| CLI version | X.Y.Z |
| GMS URL | <url> |
| Authentication | Verified |
| Search | Working |
| Profile | <name> (if configured) |
Available interaction skills:
- `/datahub-search` — Search the catalog and answer questions
- `/datahub-enrich` — Update metadata
- `/datahub-lineage` — Explore lineage
- `/datahub-govern` — Governance and data products
- `/datahub-audit` — Quality reports and audits