claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialdevelopment

📓aidp-notebooks

説明

AIDPノートブックの作成・編集・実行、およびカーネルセッションの管理を行います。 次のような場合に使用: - ノートブックを新規作成または編集したい - クラスター上でセル/コードを実行したい - カーネルセッションのアタッチ/デタッチを行いたい - インタラクティブなノートブックを構築したい(例: ウィジェット + Spark SQL + Plotly の組み合わせなど) ノートブックのファイル操作は Notebook contents REST API 経由で実行され、セルの実行は `scripts/aidp_sql.py` 経由で行われます。

原文を表示

Create, edit, and execute AIDP notebooks and manage their kernel sessions. Use when the user wants to author a notebook, run cells/code on a cluster, attach/detach a kernel session, or build an interactive notebook (e.g. with widgets + Spark SQL + Plotly). Notebook FILE ops run via the Notebook contents REST API; CELL EXECUTION runs via scripts/aidp_sql.py.

ユースケース

  • ノートブックを新規作成または編集したい
  • クラスター上でセル/コードを実行したい
  • カーネルセッションのアタッチ/デタッチを行いたい
  • インタラクティブなノートブックを構築したい

本文(日本語訳)

aidp-notebooks — ノートブック作成 & カーネル実行

Notebook contents REST API を通じて AIDP ノートブックを作成し、 バンドルされた SQL/セルヘルパーを使って Spark クラスター上でコードを実行します。 MCP サーバーは不要 — plugin は自己完結型です。

次のような場合に使用

  • 「ノートブックを作成する」「クラスター上で実行する」「これらのセルを実行する」「インタラクティブなノートブックを構築する」

ノートブック内で外部 / 非レイクハウスのソース(Fusion、EPM、Essbase、Oracle ADB/ExaCS、Snowflake、S3、Kafka など)に接続する場合は、ここで手動接続を実装しないでください。 接続レシピには oracle-ai-data-platform-workbench-spark-connectors plugin の aidp-<source> skill を使用してください (例: aidp-fusion-rest/aidp-fusion-biccaidp-oracle-dbaidp-snowflakeaidp-object-storage)。 インストール確認claude plugin list)を行い、未インストールの場合はユーザーにインストールを促してください。 その plugin が持つ oracle_ai_data_platform_connectors ヘルパーパッケージは、 aidp-connectors-bootstrap skill を通じて一度だけインストールされます (AIDP MCP 経由でパッケージを /Workspace/Shared にプッシュし、サニティインポートを実行します。 MCP がインスタンスに到達できない場合は手動でアップロードしてください)。 この skill はノートブックの作成と実行のみを担います。複数ソースの結合については aidp-federate を参照してください。

2つのエンジン

  • ノートブック FILE + SESSION 操作.ipynb の作成 / 読み取り / リネーム / 保存、カーネルセッション管理)→ 公式 aidp notebook … CLI(推奨)。利用できない場合は AIDP Notebook contents API への oci raw-request がフォールバックです。
  • CELL EXECUTION(Python/Spark の実行、カーネル状態の保持)→ バンドルされた scripts/aidp_sql.py を使用します。これがカーネルセッションを作成し、WebSocket 経由でセルを実行します。 セルの実行は CLI コマンドではありません — 公式 aidp CLI/SDK のノートブックグループはファイルとセッションのみを扱い、セルを実行することはできません(ノートブックのエンドツーエンド実行はジョブベースです)。 インタラクティブな Spark-SQL は scripts/aidp_sql.py を使用します。

2026-06-10 に de-agent 上でライブ検証済み: scripts/aidp_sql.py を経由した完全な WebSocket パス — ノートブックの自動作成、カーネルのアタッチ、セルの実行、/Workspace/Shared でのリスト/削除 — がエンドツーエンドで動作することが確認されています。 一方、bare HTTP の …/notebook/api/contents/<path> による contents CRUD パスは、20240831 インスタンス上の api_key raw-request において 500/404 が発生するため、ノートブックファイル操作には HTTP contents パスよりも WebSocket ヘルパーを優先してくださいaidp-workspace-files 参照)。

ノートブック FILE + SESSION 操作

CLI(推奨): aidp notebook <command> …(Oracle サポート、バージョン管理あり — references/aidp-cli-map.md 参照)。

  • ファイル: aidp notebook create-content | get-content | update-content | modify-content | delete-content | export-contents
  • セッション: aidp notebook create-session | get-session | list-sessions | patch-session | delete-session

フォールバック(oci raw-request — Notebook contents API): CLI がインストールされていない、または対象の操作が CLI に公開されていない場合に使用します。 ベース URL(ホスト/バージョン/認証については references/oci-raw-request.md 参照): …/20240831/dataLakes/<OCID>/workspaces/<WS>/notebook/api/contents/<url-encoded-path>

  • 作成 / 保存.ipynb)— PUT …/contents/<enc-path>、ボディ: {"type":"notebook","format":"json","path":"<path>","content":{"cells":[…],"metadata":{},"nbformat":4,"nbformat_minor":5}} (空のノートブックは "cells":[] を使用)
  • 読み取りGET …/contents/<enc-path>?content=0 を追加するとメタデータのみ取得 / 存在確認)
  • リネーム / 移動PATCH …/contents/<enc-path>、ボディ: {"path":"<new-path>"}
  • 削除DELETE …/contents/<enc-path>

ノートブックのパスは URL エンコードしてください(例: Shared/my_nb.ipynbShared%2Fmy_nb.ipynb)。 認証には references/oci-raw-request.md の認証ラダーを使用してください(--profile DEFAULT の api_key を最初に試す)。

作成 / 更新 / 変更 / 削除(コンテンツ)、パッチ / 削除(セッション)などの変更操作では、 リクエストボディを .aidp/payloads/ に保存し、実行前に確認してください — references/payloads.md 参照。

CELL EXECUTION(コア機能)— scripts/aidp_sql.py

aidp_sql.py はこの plugin にバンドルされた唯一のヘルパーです。 api_key の DEFAULT プロファイルから UPST を生成し、必要に応じてスクラッチノートブックを自動作成し、 カーネルセッションを開き、WebSocket 経由でセルを実行し、JSON を返します。 AIDP_SESSION は不要です--session-profile はオプション)。

python "$PLUGIN_DIR/scripts/aidp_sql.py" \
  --region us-ashburn-1 --datalake <OCID> --workspace <WS> --cluster <cluster-key> \
  --code "df = spark.sql('SELECT 1'); df.show()"
# optional: --notebook "Shared/_aidp_sql_scratch.ipynb" --profile DEFAULT \
#           --session-profile AIDP_SESSION --timeout 180

返り値 JSON: {"status":"ok|error","execution_count":N,"outputs":[…],"spark_job_ids":[…],"error":{…}}

  1. まず対象クラスターが RUNNING 状態であることを確認してください (クラスターの起動/ステータス確認は cluster skill / REST 経由 — references/no-mcp-rest-map.md 参照)。
  2. ヘルパーでセルを実行します。カーネル状態(DataFrame、import)は同一ヘルパー実行内で保持されます。
    • Spark SQL: --code "spark.sql('…').show()"
    • インタラクティブ UI(ipywidgets)、Plotly チャート、OCI SDK コール、カスタム認証/トークンリフレッシュもここで実行します。
  3. 上記の contents PUT でセルを書き戻すことで、結果を .ipynb に保存します。
  4. スモークテスト: SELECT 1 セル(--code "spark.sql('SELECT 1').show()")。

認証に関する注意

  • FILE 操作は REST 認証ラダーに従います(api_key --profile DEFAULT。401/403 の場合は AIDP_SESSION にフォールバック — references/oci-raw-request.md 参照)。
  • カーネルは WebSocket 経由で動作し、セキュリティトークンが必要です。 aidp_sql.py は api_key の DEFAULT プロファイルから短命の UPST を自動生成します。 既存のセッショントークンを使用する場合のみ --session-profile AIDP_SESSION を渡してください。

ノートブックの組み合わせ(%runoidlUtils、ターミナル)— ヘルパー経由でセル内で実行

これらは セル 構造です — CLI ではなく scripts/aidp_sql.py --code "…" 経由で実行してください。

  • %run — 別のノートブックのコードをインライン実行: %run /Workspace/folder/called.ipynb 呼び出し元のユーザープリンシパル + アタッチされたクラスターで即時実行され、 呼び出し先の関数/変数が呼び出し元で利用可能になります。
  • oidlUtils.notebook.run/exit — ノートブック間の値の受け渡し:
    result = oidlUtils.notebook.run("NotebookB", timeout_seconds=0, parameters={"key": "value"})  # 呼び出し元
    oidlUtils.notebook.exit(json.dumps(payload))                                                  # 呼び出し先の返却
    
  • ジョブタスクの出力 — ノートブック タスク において、oidlUtils.notebook.exit(json.dumps(payload)) がタスク出力を設定します。 下流タスクは {{tasks.[name].…}} システムパラメーター(aidp-pipelines)または jobs/runs/get-output API(response["notebook_output"]["result"])経由で読み取ります。
  • ターミナル / シェル! プレフィックス(例: !pip install …!unzip …)または subprocess モジュールを使用します。 ノートブックスコープの !pip install.ipynb 内でのみ機能し、そのノートブックとそのジョブタスクに適用されます。

AIDP ノートブックの注意事項(作成 + 実行ルール)

  • AIDP ノートブック内で spark.stop() を絶対に呼び出さないでください。 AIDP はカーネルの Spark ライフサイクルを管理しており、spark.stop() を呼ぶとコンテキストが破壊され、 以降のすべてのセルが機能しなくなり、セッションの再起動が必要になります。どこでも使わないでください。
  • Markdown セルのレンダリングの注意点(AIDP UI レンダラー):
    • 括弧内にスペースを入れない — レンダラーが %20 に URL エンコードします (例: (85 groupBy + 33 slots)85%20groupBy… と表示されます)。 ダッシュで言い換えてください — -- 85 groupBy + 33 slots --processNext() のような空括弧は問題ありません。
    • ASCII に統一する — em ダッシュの代わりに -- の代わりに --> を使用し、Markdown セルに非 ASCII 文字は使用しないでください。
  • Spark 出力パスfs.defaultFScompute:///、FUSE ベース):
    • 分散出力に対して Path.resolve() を使用したり、ドライバーのローカル FS に書き込んだりしないでください — エグゼキューターからアクセスできません。
    • compute:/// はサイズ 0 を報告しますgetContentSummary().getLength() → 0)。 出力サイズを 計測 するには oci://<bucket>@<namespace>/… 経由で書き込み/読み取りを行ってください。 ワークスペース相対パスは読み書きには使えますが、サイズ計測には使えません。
    • spark.sql.warehouse.dir からパスを導出しないでください — AIDP が管理する内部ストレージを指しています。
    • 認証情報/スクラッチファイルは /Workspace/(FUSE、断続的 + chmod 無効)ではなく /tmp/ 以下に置いてください。 ストリーミングチェックポイントは /Volumes/<catalog>/<schema>/<volume>/… 以下に置いてください。
  • セッションのデバッグ(2つの独立した領域 — それぞれ独立してデバッグ): REST セッションの作成/一覧は成功するがセルの実行が失敗する場合 → WebSocket 認証または古いカーネルの問題であり、REST パスの問題ではありません。 セッションを一覧表示し、アタッチされたクラスターを確認し、カーネルの idle/busy 状態を確認し、 署名者パスの検証とエンドツーエンドの実行を切り分けてください。 busy 状態のままの古いセッションは再起動が必要なだけかもしれません(認証修正が失敗したと決めつけないでください)。 詳細なパフォー
原文(English)を表示

aidp-notebooks — notebook authoring & kernel execution

Author AIDP notebooks via the Notebook contents REST API, and run code on a Spark cluster via the bundled SQL/cell helper. No MCP server is required — the plugin is self-contained.

When to use

  • "Create a notebook", "run this on the cluster", "execute these cells", "build an interactive notebook".

Connecting to an external / non-lakehouse source in the notebook (Fusion, EPM, Essbase, Oracle ADB/ExaCS, Snowflake, S3, Kafka, …)? Do NOT hand-roll the connection here. Use the oracle-ai-data-platform-workbench-spark-connectors plugin's aidp-<source> skill for the connection recipe (e.g. aidp-fusion-rest/aidp-fusion-bicc, aidp-oracle-db, aidp-snowflake, aidp-object-storage). Check it's installed (claude plugin list); if not, tell the user to install it. Its oracle_ai_data_platform_connectors helper package is installed once via that plugin's own aidp-connectors-bootstrap skill (it pushes the package to /Workspace/Shared via the AIDP MCP + runs a sanity import; if the MCP can't reach your instance, upload it manually). This skill then just authors + runs the notebook; for multi-source joins see aidp-federate.

Two engines

  • Notebook FILE + SESSION ops (create / read / rename / save the .ipynb, manage kernel sessions) → the official aidp notebook … CLI (preferred); oci raw-request against the AIDP Notebook contents API is the fallback.
  • CELL EXECUTION (run python/Spark, persist kernel state) → the bundled scripts/aidp_sql.py, which creates the kernel session and runs the cell over the WebSocket for you. Cell execution is NOT a CLI command — the official aidp CLI/SDK Notebook group is files + sessions only and cannot exec cells (running a notebook end-to-end is job-based). Interactive Spark-SQL stays on scripts/aidp_sql.py.

Live-verified 2026-06-10 on de-agent: the full WebSocket path via scripts/aidp_sql.py — auto-create notebook, attach kernel, execute cells, and list/delete at /Workspace/Shared — is proven working end-to-end. The bare HTTP …/notebook/api/contents/<path> contents-CRUD path, by contrast, 500/404s for api_key raw-request on 20240831 instances, so prefer the WebSocket helper over the HTTP contents path for notebook file ops (see aidp-workspace-files).

Notebook FILE + SESSION ops

CLI (preferred): aidp notebook <command> … (Oracle-supported, versioned — see references/aidp-cli-map.md).

  • Files: aidp notebook create-content | get-content | update-content | modify-content | delete-content | export-contents.
  • Sessions: aidp notebook create-session | get-session | list-sessions | patch-session | delete-session.

Fallback (oci raw-request — Notebook contents API) when the CLI isn't installed or doesn't expose the op. Base (see references/oci-raw-request.md for host/version/auth): …/20240831/dataLakes/<OCID>/workspaces/<WS>/notebook/api/contents/<url-encoded-path>

  • Create / save an .ipynbPUT …/contents/<enc-path> with body {"type":"notebook","format":"json","path":"<path>","content":{"cells":[…],"metadata":{},"nbformat":4,"nbformat_minor":5}} (an empty notebook uses "cells":[]).
  • ReadGET …/contents/<enc-path> (add ?content=0 to fetch metadata only / probe existence).
  • Rename / movePATCH …/contents/<enc-path> with body {"path":"<new-path>"}.
  • DeleteDELETE …/contents/<enc-path>.

URL-encode the notebook path (e.g. Shared/my_nb.ipynbShared%2Fmy_nb.ipynb). Use the auth ladder in references/oci-raw-request.md (--profile DEFAULT api_key first).

For mutating ops (create/update/modify/delete content, patch/delete session), persist the request body to .aidp/payloads/ and confirm first — see references/payloads.md.

CELL EXECUTION (the core) — scripts/aidp_sql.py

aidp_sql.py is the plugin's one bundled helper. It mints a UPST from the api_key DEFAULT profile, auto-creates a scratch notebook if needed, opens the kernel session, runs the cell over the WebSocket, and returns JSON. No AIDP_SESSION required (--session-profile is optional).

python "$PLUGIN_DIR/scripts/aidp_sql.py" \
  --region us-ashburn-1 --datalake <OCID> --workspace <WS> --cluster <cluster-key> \
  --code "df = spark.sql('SELECT 1'); df.show()"
# optional: --notebook "Shared/_aidp_sql_scratch.ipynb" --profile DEFAULT \
#           --session-profile AIDP_SESSION --timeout 180

Returns JSON: {"status":"ok|error","execution_count":N,"outputs":[…],"spark_job_ids":[…],"error":{…}}.

  1. Ensure the target cluster is RUNNING first (cluster start/status via the cluster skill / REST — see references/no-mcp-rest-map.md).
  2. Run cells with the helper. Kernel state (DataFrames, imports) persists within a single helper run.
    • Spark SQL: --code "spark.sql('…').show()".
    • Interactive UIs (ipywidgets), Plotly charts, OCI SDK calls, custom auth/token refresh — all run here.
  3. Persist results into the .ipynb by writing the cells back via the contents PUT above.
  4. Smoke test: a SELECT 1 cell (--code "spark.sql('SELECT 1').show()").

Auth note

  • FILE ops follow the REST auth ladder (api_key --profile DEFAULT; on 401/403 fall back to AIDP_SESSION — see references/oci-raw-request.md).
  • The kernel runs over WebSocket and needs a security token. aidp_sql.py mints a short-lived UPST from the api_key DEFAULT profile automatically; pass --session-profile AIDP_SESSION only if you want to use an existing session token instead.

Composing notebooks (%run, oidlUtils, terminal) — runs inside a cell via the helper

These are cell constructs — run them through scripts/aidp_sql.py --code "…", not the CLI.

  • %run — inline another notebook's code: %run /Workspace/folder/called.ipynb. Runs immediately with the caller's user principal + attached cluster; the callee's functions/variables become available in the caller.
  • oidlUtils.notebook.run/exit — value passing between notebooks:
    result = oidlUtils.notebook.run("NotebookB", timeout_seconds=0, parameters={"key": "value"})  # caller
    oidlUtils.notebook.exit(json.dumps(payload))                                                  # callee returns
    
  • Job task output — in a notebook task, oidlUtils.notebook.exit(json.dumps(payload)) sets the task output; downstream tasks read it via {{tasks.[name].…}} system params (aidp-pipelines) or the jobs/runs/get-output API (response["notebook_output"]["result"]).
  • Terminal / shell — prefix ! (e.g. !pip install …, !unzip …) or use the subprocess module. Notebook-scoped !pip install works only in .ipynb and applies to that notebook + its job tasks.

AIDP notebook gotchas (authoring + execution rules)

  • NEVER call spark.stop() in an AIDP notebook. AIDP manages the kernel's Spark lifecycle; spark.stop() kills the context, breaks every later cell, and forces a session restart. Omit it everywhere.
  • Markdown cell rendering quirks (the AIDP UI renderer):
    • No spaces inside parentheses — the renderer URL-encodes them to %20 (e.g. (85 groupBy + 33 slots) renders as 85%20groupBy…). Rephrase with dashes — -- 85 groupBy + 33 slots --. Empty parens like processNext() are fine.
    • Stick to ASCII — use -- not an em-dash, --> not ; avoid non-ASCII characters in markdown cells.
  • Spark OUTPUT paths (fs.defaultFS is compute:///, FUSE-backed):
    • Never Path.resolve() / write to the driver's local FS for distributed output — executors can't reach it.
    • compute:/// reports size 0 (getContentSummary().getLength() → 0); to measure output size, write/read via oci://<bucket>@<namespace>/… instead. Workspace-relative paths work for read/write but not sizing.
    • Never derive paths from spark.sql.warehouse.dir — it points at AIDP-managed internal storage.
    • Credentials/scratch belong under /tmp/, not /Workspace/ (FUSE, intermittent + chmod no-op); streaming checkpoints under /Volumes/<catalog>/<schema>/<volume>/….
  • Session debugging (two surfaces — debug independently): if REST session create/list works but cell execution fails → it's WebSocket auth or a stale kernel, not the REST path. List sessions, confirm the attached cluster, check kernel idle/busy, and isolate signer-path validation from end-to-end exec. A stale busy session may just need a restart (don't assume the auth fix failed). For deep perf tuning see aidp-spark-optimization; for failure triage see aidp-spark-debugging.

Structured Streaming (code) — runs inside a cell via the helper (platform-ref §21)

Spark Structured Streaming runs as cell code via scripts/aidp_sql.py --code "…" (cluster RUNNING). Canonical Delta pattern (platform-ref §21, lines 937–946):

# Read stream — table source/sink is Delta format only (3-part name)
streaming_df = spark.readStream.format("delta").table("catalog.schema.deltatable")
# Write stream
streaming_df.writeStream.format("delta") \
    .outputMode("append") \
    .option("checkpointLocation", "/Volumes/checkpoints1/") \
    .toTable("catalog.schema.deltatable")
  • Checkpoint must live on a Volume (/Volume/…, recommended) or workspace path; OCI Object Storage (oci://) is not supported as a checkpoint location (platform-ref §21, lines 930–933, 927).
  • Supported sources/sinks: Volume / Workspace paths (all formats), 3-part tables (Delta only), Kafka, OCI Streaming Service. oci:// and Oracle ALH/ATP/AI DB are not supported for streaming (platform-ref §21, lines 918–928).
  • For a continuous/scheduled stream, run it as a job Streaming task (Max Concurrent Runs = 1, no timeout/dependencies, runs until stopped) — configure via aidp-pipelines (platform-ref §21, lines 948–954).

Reliability rules

  • For large outputs, bound with .show(n) / LIMIT to protect context.
  • Markdown/widget rendering quirks: prefer simple cell content; verify a cell ran (status:ok) before assuming output.
  • Idempotent create: GET …/contents/<path>?content=0 first; only PUT an empty notebook if it 404s.

References

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。