Claude Media
Claude CodeのAltimate Codeプラグインでdbtとウェアハウス作業を委譲する

Claude CodeのAltimate Codeプラグインでdbtとウェアハウス作業を委譲する

Altimate Codeプラグインは、dbtやウェアハウスの依頼を専用CLIのaltimateに転送します。導入、/altimate-code:altimateの動き、--yoloの意味、データの流れまでを解説します。

dbtのモデルやウェアハウスの状態を扱う依頼を、Claude Code自身では処理せず、データ専用のCLIエージェントに丸ごと渡す。Altimate Codeプラグインは、この振り分けをスキルとスラッシュコマンドで行います。提供元はAltimateAIで、Claude Codeのプラグインディレクトリに載っています。

プラグイン自体は転送役です。実際に動くのは、手元に入れるaltimateコマンド(altimate-code CLI)です。この記事では、導入の手順、依頼が転送されるまでの流れ、実行時のフラグ、データの扱い、つまずきの切り分けを順に見ます。

Altimate Codeプラグインは何を肩代わりするのか

マーケットプレイスの説明では、100以上の専用ツールを持つCLIエージェントにdbtとウェアハウスの作業を任せるプラグインです。ツールの内訳として、SQL解析、列レベルのリネージ、dbtのbuild・test・run、ウェアハウスのプロファイリング、FinOpsが挙がっています。接続先はSnowflake、BigQuery、Redshift、Databricks、Postgres、MySQL、DuckDBです。

READMEは、委譲する理由を次のように書いています。汎用のコーディングエージェントはSQLファイルを編集できても、稼働中のウェアハウスの状態は見られません。altimate-codeは、インデックス済みのスキーマ、実際のクエリ履歴、実際のコストデータを使う層を足します。

つまり効果が出るのは、ファイルの書き換えで完結しない依頼です。「このカラムを変えると下流のどのモデルが壊れるか」「今月高かったクエリはどれか」のように、ウェアハウス側の情報が要る質問が典型です。

インストールと前提のCLI

導入経路は2つあります。Anthropicのプラグインディレクトリからは、1コマンドで入ります。

claude plugin install altimate-code

提供元のマーケットプレイスを追加する経路もあります。こちらはClaude Codeのセッション内で実行します。

/plugin marketplace add AltimateAI/altimate-claude-plugin
/plugin install altimate-code@altimate-claude-plugin

どちらの経路でも、プラグインとは別にCLIが必要です。READMEが示す入れ方は2通りです。

# npm版(Node 20以上。altimateとaltimate-codeの両方が使える)
npm install -g altimate-code
 
# 単体バイナリ版(altimateのみ)
curl -fsSL https://www.altimate.sh/install | bash

入れたらaltimateを一度起動し、TUIの/connectでLLMプロバイダーを設定します。環境変数で渡す方法もあり、ANTHROPIC_API_KEYやOPENAI_API_KEYなど20以上が使えます。

CLIの名前には注意点があります。v0.7.1以降の正式名はaltimateで、それより古いnpm版だけがaltimate-codeを使います。プラグインはまずaltimateを探し、なければaltimate-codeにフォールバックします。2026年10月20日公開のv1.1.1は、curl版でaltimateしか無い環境が「未インストール」と誤判定される不具合の修正でした。

CLIが見つからない場合、プラグインは黙ってClaudeの標準ツールで代行しません。失敗と対処法を表示して止まります。

依頼はどう転送されるか

プラグインの構成要素は3つで、どれも実行ロジックを持つ常駐サービスではありません。

部品役割
スキル(skills/altimate-code/SKILL.md)役割依頼がデータ作業に当たるとき、CLIへの転送手順を指示する
コマンド(commands/altimate.md)役割/altimate-code:altimate <依頼>で明示的に転送する
SessionStartフック役割セッション開始時に、altimate-codeの能力を説明する固定テキストを追加する

SessionStartフックが足すのは静的な説明文だけで、ファイルの読み取りや外部への送信はしません。Claude Codeはその説明を読んで、どんな依頼が向いているかを判断します。

スラッシュコマンドの名前は、Claude Codeがプラグイン名を前置きして/altimate-code:altimateになります。v1.1.0の変更履歴に、素の/altimateは「Unknown command」になるとあります。

スキルの本文は、転送先を絞る書き方になっています。

  • 「何かが壊れている」だけで失敗内容が書かれていない依頼は、転送する前にエラーメッセージを聞き返す
  • 転送した後に、Edit・Write・Bashで同じ作業をやり直さない。CLIが失敗したら失敗をそのまま伝えて止まる
  • 結果は要約せず、出力ファイルの中身をそのまま見せる

最後の点は好みが分かれます。Claude Codeに結果を解釈させたいときは、結果が出た後に別の依頼として続けます。

実際に走るコマンド

スキルとコマンドが実行する内容は、本文にそのまま書かれています。依頼文はヒアドキュメントで変数に入れ、シェルがコマンド置換を解釈しないようにしてから渡します。

umask 077
OUTPUT_FILE="$(mktemp "${TMPDIR:-/tmp}/altimate-result.XXXXXX")"
"$ALTIMATE_BIN" run "$TASK" \
  --agent builder \
  --yolo \
  --output "$OUTPUT_FILE" \
  --dir "$(pwd)" \
  < /dev/null

$ALTIMATE_BINと$TASKは、直前でPATHの探索と依頼文の格納をした変数です。各フラグの理由は、スキル本文では次のように説明されています。

フラグ理由
--agent builder理由ウェアハウス用ツール、ワークスペースのスキル、メモリを持つエージェント
--yolo理由非対話で動かすため。無いと最初の権限確認で止まる
--output理由最終回答を専用の一時ファイルに書く。固定パスだと並行セッションで衝突し、内容が漏れることがある
--dir "$(pwd)"理由現在のプロジェクトのdbt設定やprofiles.ymlを拾わせる
< /dev/null理由altimate runが標準入力も依頼の一部として読むため、閉じておく

同じプロジェクトでの追加の依頼には--continueを付けて、直前のセッションを再開します。プロンプトキャッシュが温かい状態で続けられ、スキーマの再調査が減るという説明です。別プロジェクトや無関係な話題に移るときは付けません。出力ファイルは、結果を見せた後に削除する決まりです。倉庫の行やPIIの検出結果がディスクに残らないようにするためです。

落とし穴

--yoloで、CLI側の権限確認が出なくなる

--yoloは非対話実行のための必須フラグとして付けられます。つまり、altimate側で起きる操作に、Claude Codeの権限確認のような承認の場面は挟まりません。READMEの「データ処理」は、ウェアハウスのクエリやdbtコマンド、ファイル編集があなたの認証情報で手元で実行されると書いています。

書き込み権限のある本番の認証情報がprofiles.ymlに入っている環境では、承認の場面が無いまま書き込み系の操作が実行されることになります。最初は読み取り専用のロールや開発用スキーマで試すのが無難です。

依頼の書き方と、READMEの4つの例

READMEは、プラグイン導入後に試せる依頼を4つ挙げています。いずれも先頭に/altimate-code:altimateを付ければ、確実に転送されます。

  1. 列レベルのリネージ: models/marts/fct_revenue.sqlのrevenue_usdを源泉までたどり、丸め方を変えたときに影響する下流モデルを列挙させる
  2. ウェアハウスのコスト分析: Snowflakeアカウントで今月高かったクエリ10件と、過剰に見えるウェアハウスを出させる
  3. 方言をまたぐ検証: Snowflakeのprod.ordersとBigQueryのanalytics.ordersをidキーで行単位に突き合わせ、不一致を要約させる
  4. dbtテストの生成: models/staging/stg_orders.sqlに対し、CASE/WHENのユニットテストも含めて生成させる

形にすると、次のように打ちます。

/altimate-code:altimate models/marts/fct_revenue.sql の revenue_usd を
源泉までたどり、丸めを変えた場合に影響する下流モデルを一覧にして

結果が空で返るときは、依頼が曖昧すぎる可能性があります。READMEは、対象テーブル、期待する列、期間を書き足して出し直すよう案内しています。

Altimateワークスペースと連携する

ワークスペースは、チームで共有するスキル、知識、メモリ、ウェアハウス連携をまとめたものです。プロジェクトをワークスペースにリンクすると、転送された依頼はそのスキルと知識を使って動きます。Claude Code側の設定は要りません。

  1. サインインする。! altimate auth login -p altimate-backend --method "Altimate LLM Gateway"を実行すると、ブラウザが開きます。--methodを外すとメニュー待ちで止まり、Claude Codeの!プロンプトからは答えられません
  2. リンクする。Claudeに頼むと、altimate workspace listで一覧を出し、選んだものをaltimate link --workspace "<id or name>"で結びます。新規作成はaltimate link --createです
  3. 確認する。altimate workspace statusが、リンク先と画面のURLを出します

スキル本文では、状態確認の終了コードが決まっています。0がリンク済み、3が未リンクです。未サインインなら終了コード2とNot signed in to Altimateが返ります。

altimate link単体のピッカーは端末が必要で、!経由では動きません。そのためスキルは一覧表示から選ぶ手順を取ります。workspace listは新しいリリースにあるコマンドで、古いaltimate-codeではワークスペース名を直接伝える必要があります。

転送した作業で学んだ内容は、ワークスペースのメモリに保存され、CLI、IDE、Studioでチームと共有されます。「うちのstagingモデルの命名規則は」のようなチーム固有の質問も、このスキルが拾います。

データはどこへ送られるのか

導入前に確認しておきたいのは、依頼文の行き先です。プライバシーポリシーでは次のように整理されています。

  • プラグイン自体はデータを収集しない。能力を説明する固定テキストを出すフックと、転送用のスキルとコマンドだけで構成される
  • 転送時、依頼文はそのままaltimate CLIに渡り、設定済みのLLMプロバイダーに送られる。既定はAltimate LLM Gateway、自前のキーを設定すれば、プロバイダーへ直接送られてAltimateは経路に入らない
  • ウェアハウスの認証情報と、クエリ結果は手元に残る。Altimateへは送られない
  • スキーマ情報のインデックスはローカルに作られる

CLIは匿名の利用テレメトリも送ります。イベント名、ツールの種別、トークン数、所要時間、エラーの種類が対象で、コードやクエリ、認証情報、ファイルパス、プロンプトの内容は含まないと書かれています。止めるには環境変数を設定します。

export ALTIMATE_TELEMETRY_DISABLED=true

設定ファイルで止める場合は、~/.config/altimate-code/altimate-code.jsonに{ "telemetry": { "disabled": true } }を書きます。

なお、altimate-codeは独自のLLMで動きます。費用とレート制限は、Claude Codeではなくそちらに設定したプロバイダーに掛かります。

動かないときの切り分け

READMEの表を、症状から引ける順に並べ替えます。

症状対処
altimateもaltimate-codeもPATHに無い対処npmかcurlで入れ、altimateを一度起動して設定する
UnauthorizedやNo provider configured対処TUIの/connectでプロバイダーを再設定するか、APIキーの環境変数を設定する
数分たっても終わらない対処TUIを開いて未回答の確認がないか見る。使うモデルを指定して再実行する
結果が空対処対象テーブル、列、期間を明記して依頼し直す
途中でUNKNOWN_USERやDatabase does not exist対処接続はできているが認証情報がプロジェクトに合っていない。TUIかprofiles.ymlを直す
Not signed in to Altimate対処先述のauth loginを実行する
回答がワークスペースの知識を無視する対処altimate workspace statusでリンクを確認する
入れたのに転送されない対処claude plugin enable altimate-code@altimate-claude-pluginで有効化を確認する

最後の行は見落としやすい点です。プライバシーポリシーには「無効の状態で配布される」という記述があり、有効にするまで何も転送されないと書かれています。導入しても転送が起きないときは、まず有効化を疑ってください。

同じ型のプラグインとの違い

データ基盤の作業を専用の実行系に渡すプラグインは、他にもあります。仕組みの違いは、判定のしかたです。

Snowflake向けのCortex Codeプラグインは、プロンプトごとにフックが判定語を見て、Snowflake向けかどうかを振り分けます。Altimate Codeプラグインは、SessionStartの説明文とスキルの説明を手がかりに、Claude Code自身が転送を判断します。SessionStartフックは固定テキストを足すだけで、判定語のパターンは持ちません。転送されなかったときは/altimate-code:altimateを先頭に付けて明示的に呼べます。

Airflowを軸にするなら、AstronomerのプラグインがDAGの作成とデバッグに特化したスキル群を持ちます。Altimateはdbtとウェアハウスの状態に寄った、方言をまたぐ作業向けです。

まとめ

Altimate Codeプラグインを入れても、Claude Codeがdbtに詳しくなるわけではありません。データ作業の入口で別のエージェントに手渡す、橋渡しの仕組みです。結果の質はaltimate側のプロバイダー設定とウェアハウスの認証情報で決まります。

試すなら、まず読み取り専用の認証情報と開発用スキーマで、リネージの確認のような読み取り中心の依頼から始めるのが、--yolo前提の転送には合っています。テレメトリとプロバイダーの経路は、導入前に自社の規程と照らしておくと安心です。公式プラグインを推薦させる仕組みはplugin hintsの記事にあります。

この記事を共有:XはてブLinkedIn