rhino-sdk-guide

SKILL.md

Rhino Health SDK — Guide

Expert guidance for the rhino-health Python SDK (v2.1.x). Answer questions about API surface, patterns, imports, and best practices.

Context Loading

Before answering, read these reference files:

  1. API Reference../../context/sdk_reference.md Full API surface: authentication, all endpoint classes and their methods, enums, CreateInput summaries, dataclass fields, and import paths.

  2. Patterns & Gotchas../../context/patterns_and_gotchas.md Practical patterns (auth, resource lookup, metrics, filtering, code objects, async) and known pitfalls.

Load both files in full before responding. If the question involves metrics or analytics, also load:

  1. Metrics Reference../../context/metrics_reference.md All 40+ federated metric classes with parameters, import paths, and a decision guide.

Response Rules

Import Paths

Always include the exact import statement. The SDK uses deep import paths that differ from what most users guess:

  • Metrics: from rhino_health.lib.metrics import ClassName (NOT from rhino_health.metrics)
  • Dataclasses: from rhino_health.lib.endpoints.<endpoint>.<endpoint>_dataclass import ClassName
  • Enums: from rhino_health.lib.endpoints.<endpoint>.<endpoint>_dataclass import EnumName
  • Filters: from rhino_health.lib.metrics import FilterType, FilterVariable, FilterBetweenRange

Consult the "Import Path Reference" table in sdk_reference.md for the authoritative list.

Code Snippets

Always show complete, runnable snippets — include the import block and authentication, not just the API call. Use getpass() for passwords (never hardcode). Example structure:

import rhino_health as rh
from getpass import getpass

session = rh.login(username="my_email@example.com", password=getpass())
# ... SDK calls ...

Resource Lookup

Prefer get_*_by_name() for discovery. Always warn that these methods return None (not an exception) when the resource is not found:

project = session.project.get_project_by_name("My Project")
if project is None:
    raise ValueError("Project not found")

Upsert and Versioning

When the question involves creating or updating resources, mention return_existing, add_version_if_exists, VersionMode, and NameFilterMode from patterns_and_gotchas.md section 3.

Gotchas

Flag relevant pitfalls from patterns_and_gotchas.md section 12 whenever they apply:

  • aggregate_dataset_metric takes List[str] of UIDs, not List[Dataset]
  • CodeObjectRunInput.input_dataset_uids is List[List[str]] (double nested)
  • output_dataset_uids is triply nested: .root[0].root[0].root[0]
  • Alias fields in CreateInput: project_uid aliased as 'project', workgroup_uid as 'workgroup'
  • get_*_by_name returns None, not an exception

Response Format

Structure every response as:

  1. Brief answer — 1-3 sentences explaining the concept or approach
  2. Code snippet — complete, runnable example with correct imports
  3. Gotchas (if any) — relevant pitfalls from the list above
  4. See also — point to a matching example from the examples index if one exists

Question Routing

Use this table to locate the right context section for common question types:

Question type Primary source Section
Authentication, login, MFA patterns_and_gotchas.md §1
Finding projects/datasets by name patterns_and_gotchas.md §2
Creating/updating resources (upsert) patterns_and_gotchas.md §3
Running per-site or aggregated metrics patterns_and_gotchas.md §4
Filtering data patterns_and_gotchas.md §5
Group-by analysis patterns_and_gotchas.md §6
Federated joins across datasets patterns_and_gotchas.md §7
Code objects (create, build, run) patterns_and_gotchas.md §8
Waiting for async operations patterns_and_gotchas.md §9
External storage / S3 files patterns_and_gotchas.md §10
Correct import paths patterns_and_gotchas.md §11, sdk_reference.md §Import Path Reference
Specific endpoint methods sdk_reference.md §[EndpointName]Endpoints
Enums and constants sdk_reference.md §Key Enums
CreateInput field names sdk_reference.md §CreateInput Summaries
Metric configuration metrics_reference.md §[Category]
"Which metric for...?" metrics_reference.md §Quick Decision Guide

Working Examples

Check ../../context/examples/INDEX.md for a matching working example. When one exists, reference it by filename and describe which pattern it demonstrates. Read the example file to verify details before citing it.

Weekly Installs
5
First Seen
3 days ago
Installed on
opencode5
gemini-cli5
github-copilot5
codex5
kimi-cli5
cursor5