data-catalog

SKILL.md

data-catalog

Purpose

This skill manages metadata for data assets, enabling discovery, governance, and lineage tracking in data engineering workflows. It catalogs datasets, schemas, and dependencies to support data-driven projects.

When to Use

Use this skill when you need to track data assets in a project, such as during ETL processes, data governance audits, or when building data pipelines. Apply it in scenarios involving large-scale data repositories, compliance requirements, or collaborative data teams.

Key Capabilities

  • Register and update metadata for datasets using JSON structures, e.g., {"name": "sales_data", "schema": {"columns": ["id", "date"]}}.
  • Search and query assets via full-text or tag-based filters, supporting lineage queries like tracing data origins.
  • Enforce governance policies, such as access controls, by associating tags like "sensitive" to assets.
  • Generate lineage graphs in JSON format, e.g., {"source": "raw_logs", "target": "processed_reports"}.
  • Integrate with storage systems like S3 or databases, using connectors that require API keys via $DATA_CATALOG_API_KEY.

Usage Patterns

To use this skill, first authenticate with an environment variable like export DATA_CATALOG_API_KEY=your_key. Then, follow a pattern: initialize the catalog, register assets, query as needed, and handle updates. For pipelines, embed it in scripts to auto-register outputs. Always validate metadata before operations to avoid conflicts.

Common Commands/API

Use the dcatalog CLI or REST API for interactions. Authentication requires $DATA_CATALOG_API_KEY in requests.

  • CLI Commands:

    • Register an asset: dcatalog register --asset-name sales_data --type dataset --metadata '{"schema": ["id", "amount"]}' --api-key $DATA_CATALOG_API_KEY
    • Query assets: dcatalog search --query "sales" --tags metadata --limit 10
    • Update lineage: dcatalog update-lineage --source raw_data --target processed_data --relation depends_on
  • API Endpoints:

    • POST /api/v1/assets: Create a new asset. Example curl: curl -H "Authorization: Bearer $DATA_CATALOG_API_KEY" -d '{"name": "sales_data", "tags": ["metadata"]}' -X POST https://api.opencclaw.com/api/v1/assets
    • GET /api/v1/assets/search?query=sales: Search assets. Example: curl -H "Authorization: Bearer $DATA_CATALOG_API_KEY" https://api.opencclaw.com/api/v1/assets/search?query=sales
    • PUT /api/v1/lineage: Update lineage. Code snippet:
      import requests
      headers = {"Authorization": f"Bearer {os.environ['DATA_CATALOG_API_KEY']}"}
      response = requests.put('https://api.opencclaw.com/api/v1/lineage', headers=headers, json={"source": "raw_data", "target": "report"})
      

Config formats are JSON-based, e.g., for CLI config file (~/.dcatalog/config.json):
{"default_tags": ["data-governance"], "api_endpoint": "https://api.opencclaw.com"}

Integration Notes

Integrate this skill with data tools like Apache Airflow or AWS Glue by wrapping API calls in custom operators. For example, in a Python script, import the API client and pass $DATA_CATALOG_API_KEY. Ensure compatibility by matching schema versions; use JSON configs for mappings, e.g., link to S3 buckets via {"bucket": "my-bucket", "prefix": "data/"}. Test integrations in a sandbox environment before production.

Error Handling

Handle errors by checking HTTP status codes in API responses; for example, if status is 401, prompt for $DATA_CATALOG_API_KEY revalidation. For CLI, use try-catch in scripts:

try:
    subprocess.run(["dcatalog", "register", "--asset-name", "test"], check=True)
except subprocess.CalledProcessError as e:
    print(f"Error: {e.returncode} - {e.output}")

Common issues include invalid JSON metadata (fix by validating with json.loads() before sending) or authentication failures (retry with refreshed keys). Log errors with timestamps for debugging.

Graph Relationships

  • Related Cluster: data-engineering
  • Connected Tags: metadata, data-governance, data-discovery
  • Dependencies: Often links to skills in storage or processing clusters, e.g., for data ingestion or transformation.
Weekly Installs
6
First Seen
10 days ago
Installed on
openclaw6
github-copilot6
codex6
kimi-cli6
gemini-cli6
cursor6