Skip to content
Back to skills

Source 59f57f0383709061e890078b

ASecurity

Manage AIDP Spark compute clusters — list, status, start/stop/restart, installed libraries (JARs/Python), provision/scale a new cluster (driver/worker shapes, autoscale, GPU/RAPIDS, AI Compute), and connect external BI tools (JDBC/ODBC). Use when the user asks about clusters, needs to start/stop compute, create or scale a cluster, install libraries, set up a GPU cluster, use AI Compute for agent flows, connect Tableau/Power BI/DBeaver, or pick a cluster before running data work.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythonjavabashsqldebuggingapi

Works with

  • terminal
  • cli
  • api
  • mcp

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add gutsofpratik/OpenClaude-Skills --skill source-59f57f0383709061e890078b --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Source 59f57f0383709061e890078b?

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

Security grade badge for Source 59f57f0383709061e890078b
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gutsofpratik-source-59f57f0383709061e890078b/badge)](https://www.skillsdirectory.com/skills/gutsofpratik-source-59f57f0383709061e890078b)

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: aidp-cluster-ops
description: Manage AIDP Spark compute clusters — list, status, start/stop/restart, installed libraries (JARs/Python), provision/scale a new cluster (driver/worker shapes, autoscale, GPU/RAPIDS, AI Compute), and connect external BI tools (JDBC/ODBC). Use when the user asks about clusters, needs to start/stop compute, create or scale a cluster, install libraries, set up a GPU cluster, use AI Compute for agent flows, connect Tableau/Power BI/DBeaver, or pick a cluster before running data work.
---

# `aidp-cluster-ops` — cluster lifecycle & libraries

Inspect and control AIDP Spark clusters. Most data skills depend on a RUNNING cluster, so this is the
common pre-step. This is a **control-plane** skill. No MCP and no `ai-data-engineer-agent` repo are required.

## When to use
- "What clusters are there / is X running?", "start/stop/restart the cluster", "what libraries are
  installed", "check if compute is up before running data work".

## Engine — official `aidp` CLI (control-plane)
Preferred engine is the official Oracle `aidp` CLI; `oci raw-request` is the fallback when the CLI isn't
installed. Both hit the same data-plane REST API with the same auth — see
[references/aidp-cli-map.md](../../references/aidp-cli-map.md) for the full command map,
[references/oci-raw-request.md](../../references/oci-raw-request.md) for base URL + auth ladder + async/error
conventions, and [references/no-mcp-rest-map.md](../../references/no-mcp-rest-map.md) for REST endpoint shapes.

| Op | CLI (preferred) | REST fallback |
|---|---|---|
| List clusters | `aidp cluster list` | `GET /clusters` — or `GET /workspaces/<ws>/clusters` |
| Status / config | `aidp cluster get --cluster-key <key>` | `GET /workspaces/<ws>/clusters/<key>` |
| Default cluster | `aidp cluster get-default` | (in list output) |
| Libraries | `aidp cluster list-libraries --cluster-key <key>` (`patch-library` to add/remove) | inside cluster GET |
| Start / Stop / Restart | `aidp cluster start\|stop\|restart --cluster-key <key>` | `POST /workspaces/<ws>/clusters/<key>/actions/start\|stop\|restart` |
| Logs / metrics | `aidp cluster search-logs\|download-logs\|summarize-metrics-data --cluster-key <key>` | `…/clusters/<key>/…` |

All CLI calls take `--instance-id <DATALAKE_OCID> --auth api_key --profile DEFAULT --region <r>`.

```bash
# CLI (preferred): list clusters
aidp cluster list --instance-id <DATALAKE_OCID> --auth api_key --profile DEFAULT --region us-ashburn-1

# CLI (preferred): cluster detail — state, config, connections
aidp cluster get --cluster-key <KEY> --instance-id <DATALAKE_OCID> --auth api_key --profile DEFAULT --region us-ashburn-1

# CLI (preferred): start (the CLI handles the required body for you)
aidp cluster start --cluster-key <KEY> --instance-id <DATALAKE_OCID> --auth api_key --profile DEFAULT --region us-ashburn-1
```

Mutating ops (start/stop/restart, patch-library) — for shared clusters, persist any non-trivial body to
`.aidp/payloads/` and confirm first ([references/payloads.md](../../references/payloads.md)).

**Fallback (no CLI installed) — `oci raw-request`** against
`https://aidp.<region>.oci.oraclecloud.com/20240831/dataLakes/<DATALAKE_OCID>/…`:

```bash
# List clusters (verified GET)
oci raw-request --http-method GET \
  --target-uri "https://aidp.us-ashburn-1.oci.oraclecloud.com/20240831/dataLakes/<OCID>/workspaces/<WS>/clusters" \
  --profile DEFAULT

# Cluster detail — state, config, connections, AND installed libraries
oci raw-request --http-method GET \
  --target-uri "https://aidp.us-ashburn-1.oci.oraclecloud.com/20240831/dataLakes/<OCID>/workspaces/<WS>/clusters/<KEY>" \
  --profile DEFAULT

# Start (POST action) — a JSON body is REQUIRED (use {}); empty body 400s
oci raw-request --http-method POST \
  --target-uri "https://aidp.us-ashburn-1.oci.oraclecloud.com/20240831/dataLakes/<OCID>/workspaces/<WS>/clusters/<KEY>/actions/start" \
  --request-body '{}' --request-headers '{"content-type":"application/json"}' \
  --profile DEFAULT
```

## Patterns
- **Find compute:** `aidp cluster list` (REST `GET /clusters`) lists DataLake clusters;
  `GET /workspaces/<ws>/clusters` scopes the REST fallback to one workspace. Cross-workspace questions must
  pass the right `<ws>` — don't rely on a single default workspace.
- **Status + readiness:** `aidp cluster get --cluster-key <key>` (REST `GET /workspaces/<ws>/clusters/<key>`)
  returns `state` (e.g. `STARTING` → `ACTIVE`) + `stateDetails`, config, connections, and attached
  notebooks/sessions. Data/SQL skills should call this first and `start` if stopped, then re-check, polling
  `state` until `ACTIVE` (start takes minutes).
- **Lifecycle:** `aidp cluster start|stop|restart` (REST `…/actions/start|stop|restart`). The async 202 is
  poll-to-terminal. Confirm before stopping a shared cluster.
- **Libraries:** `aidp cluster list-libraries --cluster-key <key>`; with the REST fallback the installed
  JARs + Python libs come back **inside the cluster GET**. Check before relying on a connector/lib.

## Caveats
- **REST fallback only — `actions/start|stop|restart` need a body `{}`** (LIVE-VERIFIED 2026-06-09):
  calling with no body returns `400 InvalidParameter: The request body must not be null`; passing
  `--request-body '{}'` returns `202`. This (not workspace mismatch) was the original "start 400". The
  `aidp` CLI sets this body for you. A second `start` while already `STARTING` returns `409 Conflict`
  (expected) on either engine.
- **Use the cluster's home workspace** in the REST action URL — find it via `GET /workspaces/<ws>/clusters`
  (a cluster may not live in your default workspace). The CLI resolves the workspace from the cluster key.
- Per the no-fabrication gate in `oci-raw-request.md`: don't present an endpoint/version/prefix as confirmed
  until a live `2xx` (or documented 4xx) is recorded in `rest-endpoint-map.md`.

## Provision / scale a cluster (`aidp cluster create|update|delete`; REST `POST/PUT/DELETE …/workspaces/<ws>/clusters`)
**Live-verified create body** (this provisioned `agent_e2e_cluster` → ACTIVE, 2026-06-10):
```json
{ "type": "USER", "displayName": "etl_cluster",
  "driverConfig": { "driverShape": "amd.generic", "driverShapeConfig": { "ocpus": 2, "memoryInGBs": 16, "gpus": 0 } },
  "workerConfig": { "minWorkerCount": 1, "maxWorkerCount": 1, "workerShape": "amd.generic",
                    "workerShapeConfig": { "ocpus": 2, "memoryInGBs": 16, "gpus": 0 } },
  "clusterRuntimeConfig": { "sparkVersion": "3.5.0", "type": "SPARK", "initScripts": [] },
  "autoTerminationMinutes": 120 }
```
- **`displayName` charset:** must **start with a letter**; the only special chars allowed are **underscore
  and slash**. A hyphen (e.g. `etl-cluster`) → `400 InvalidParameter` ("no special characters … except for
  underscore, slash") — use `etl_cluster`.
- **Shapes:** AMD / ARM / Intel / NVIDIA GPU (platform-ref §12). **Quickstart** = 1 driver + ≤10 workers, AMD
  2 OCPU/32 GB, autoscale (fast start); **Custom** = full control. Installing custom libs to a Quickstart
  cluster converts it to Custom.
- **Scale:** static (`minWorkerCount == maxWorkerCount`) or **autoscale** (min < max).
- **Run duration:** always-on (omit) or **idle timeout** via `autoTerminationMinutes`.
- **Runtime:** Spark 3.5.0 / Delta 3.2.0 / Python 3.11 / Java 17 (Python + SQL user code only).

## Libraries (install) — `aidp cluster patch-library`
Formats `.jar` / `.whl` / `requirements.txt`; source = workspace / volume / uploaded file. **Must restart the
cluster after installing.** Notebook-scoped installs (`!pip install …`, `.ipynb` only) don't need a restart
but apply only to that notebook (see `aidp-notebooks`).

## GPU / RAPIDS clusters (platform-ref §14)
GPU shapes: 1 GPU = 15 OCPU/24 GB GPU mem; 2 GPU = 30 OCPU/48 GB. **Rule: both driver AND worker must be
NVIDIA GPU — no CPU/GPU mixing.** Required RAPIDS Spark configs: `spark.plugins=com.nvidia.spark.SQLPlugin`,
`spark.shuffle.manager=com.nvidia.spark.rapids.spark350.RapidsShuffleManager`,
`spark.rapids.shuffle.mode=MULTITHREADED`, `spark.executor.resource.gpu.amount=1`,
`spark.task.resource.gpu.amount=1/executor.cores`. Libraries: Spark RAPIDS, Spark RAPIDS ML (cuML).

## AI Compute (Preview) — powers agent flows
Specialized compute for **agent flows** (`aidp-agent-flows` / `aidp-agent-highcode`): 1–64 OCPU, restricted to
**PvtDefaultWorkspace**; private workspaces must connect to a private Autonomous AI Lakehouse (immutable once
linked); public workspaces can't use private ALH (AI features unavailable). Create via Workspace > Create >
AI Compute; Start/Stop frees/meters compute; attached flows show on the cluster's Agent flows tab.

## Connect external BI tools (JDBC / ODBC) — additive to OAC/FDI, not a replacement
The cluster **Connection Details** tab provides the **simbaSpark JDBC** and **ODBC** drivers for DBeaver /
Tableau / Power BI. JDBC driver class `com.simba.spark.jdbc.Driver`; use the JDBC URL from that tab. Auth:
**token-based** (no `ociProfile` in the URL → browser SSO) or **API key** (append `ociProfile=<profile_name>`).
OAC connection setup itself is OAC-side (the OAC/fusion-bundle plugin); here we only expose the AIDP driver/URL.

## Notes
- For Spark job/stage/task diagnostics on a running cluster, use `aidp-spark-debugging`.
- **Optional accelerator:** if an `aidp` MCP happens to be configured, its `list_clusters` /
  `get_cluster_status` / `get_default_cluster` / `start_cluster` / `stop_cluster` / `restart_cluster` /
  `list_cluster_libraries` tools wrap these same REST calls. The MCP is **not required** — the
  `oci raw-request` calls above are the source of truth.

## References
- [references/aidp-cli-map.md](../../references/aidp-cli-map.md) — skill → official `aidp` CLI command map (primary engine)
- [references/oci-raw-request.md](../../references/oci-raw-request.md) — base URL, auth ladder, async/errors
- [references/no-mcp-rest-map.md](../../references/no-mcp-rest-map.md) — cluster endpoint map + start-400 note
- [references/rest-endpoint-map.md](../../references/rest-endpoint-map.md) — verification ledger

Files in this skill

  • PROVENANCE.json300 B
  • SKILL.md10 KB
  • UPSTREAM-LICENSE.txt1.1 KB

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.