Skip to content
Back to skills

Dataset

ASecurity

Use when ingesting, validating, curating, or querying production sensor data as a versioned dataset-of-record, or wiring the dataset-ingest-curate workflow.

  • 33 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
devopsbashfastapikubernetestestingapibackendsecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add nebius/nebius-physical-ai --skill dataset --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dataset?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dataset
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nebius-dataset/badge)](https://www.skillsdirectory.com/skills/nebius-dataset)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dataset
description: Use when ingesting, validating, curating, or querying production sensor data as a versioned dataset-of-record, or wiring the dataset-ingest-curate workflow.
---

# Dataset (Dataset-of-Record)

A unified ingestion / validation / curation layer that turns raw production
sensor data into a queryable, versioned **dataset-of-record**, filterable by
event, location, and quality. It composes existing primitives (FiftyOne for
curation/visualization, LanceDB for the vector/metadata query index, S3 as the
bus) behind one tool instead of leaving them disconnected.

## Three-access pattern

Source of truth is the FastAPI service (`npa/src/npa/workbench/dataset/service.py`).
The CLI (`npa/src/npa/cli/workbench/dataset.py`) and SDK
(`npa/src/npa/sdk/workbench/dataset.py`) are thin clients. Do not duplicate logic
across layers.

## Interfaces

CLI:

```bash
npa workbench dataset ingest --input-path <s3> --output-path <s3> --dataset-id <id>
npa workbench dataset validate --input-path <s3-manifest> --output-path <s3>
npa workbench dataset curate --input-path <s3-manifest> --output-path <s3> --event <e> --location <l>
npa workbench dataset query --input-path <s3-manifest> --event <e> --location <l>
npa workbench dataset status --dataset-id <id> --version <v>
npa workbench dataset system-info
npa workbench dataset list
```

Endpoints: `/health`, `/status`, `/system-info`, `/list`, `POST /ingest`,
`POST /validate`, `POST /curate`, `GET /query`.

## API contract

- `POST /ingest`: pull raw sensor data from `--input-path`, validate against the
  declared sensor schema, normalize to canonical records, and register a
  versioned manifest at `--output-path` (schema `npa.dataset.manifest.v1`:
  dataset id + version, record count, sensor modalities, source lineage,
  per-record S3 pointers, quality stats).
- `POST /validate`: schema + quality-metric validation (completeness, corruption,
  per-sensor sanity); emits `npa.dataset.validation_report.v1`.
- `POST /curate`: filter/slice by **event of interest, location, and quality
  metric**; writes a derived version whose manifest records lineage back to the
  parent (parent dataset id/version + filter predicate).
- `GET /query`: query records by event/location/quality facets. Backed by the
  LanceDB index when `--lancedb-endpoint` is set; falls back to the manifest so
  the tool works without a running LanceDB.

Reuse the FiftyOne tool for curation/visualization handoff and the LanceDB tool
for the query index (see `integrations.py`) rather than re-implementing either —
these are HTTP seams mocked in tests.

## Lineage

Every manifest threads provenance (workflow run, input URIs, dataset version,
parent dataset id/version, filter predicate) so a later lineage/metadata service
can consume it. Do not hardcode a metadata backend; keep lineage in the S3
manifests.

## GPU routing

Ingest / validate / curate / query are CPU-only. The optional embedding backfill
that populates the LanceDB query index runs on H100 (general training class).

## SkyPilot + workflow

- Declarative pipeline (ingest -> validate quality gate -> curate -> register
  queryable version): `workflows/testing/dataset-ingest-curate.yaml`.
  The raw SkyPilot twin is retired.
- The `register` stage needs the LanceDB service reachable from a pod:
  `npa workbench lancedb deploy --runtime kubernetes --namespace workbench --storage-path s3://<bucket>/lancedb/`

toolRefs: `workbench.dataset.ingest`, `workbench.dataset.validate`,
`workbench.dataset.curate`, `workbench.dataset.query`,
`workbench.dataset.write_quality_decision`, `workbench.dataset.report_rejection`.

## Known issues

- The quality gate rejects the version when mean completeness is below
  `config.completeness_min` or the corruption rate exceeds
  `config.max_corruption_rate`.
- Curated child versions are content-addressed (`<parent>.curated-<hash>`); a
  workflow that queries a curated version wires the concrete manifest URI at
  runtime.
- The service defaults to token authentication and an empty request storage
  scope. Set `DATASET_TOKEN`, plus the narrow `DATASET_ALLOWED_S3_ROOTS` and/or
  `DATASET_ALLOWED_LOCAL_ROOTS` boundary. These allowlists apply to deployed
  FastAPI requests, not default embedded CLI, SDK, or workflow toolRef
  execution. `DATASET_AUTH_MODE=none` is an explicit local/test service opt-in
  only; see `docs/security/workbench-service-boundaries.md`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.