mcpField
O
ops-integrate

ops-integrate

github.com/davepoon開発3.7k69 回インストール今日更新
リポジトリ

ops-integrate について

ops-integrateは、外部APIをOPSに追加するためのスキルです。サービス連携を設定するユーザー向けに、API情報の確認、認証情報の検査、ローカル登録を行います。

主な機能

  1. 01APIドキュメントと認証方式の確認
  2. 02認証情報の収集とローカル保存
  3. 03エンドポイントのヘルスチェック
  4. 04連携の登録と一覧表示

活用シーン

  1. 01サードパーティAPIの追加
  2. 02登録済みサービスの確認
  3. 03認証情報の動作確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davepoon/buildwithclaude --skill ops-integrate

インストール後、Claude Code で/ops-integrateを入力して読み込まれたか確認します。

詳細

ランタイムコンテキスト

PREFS="${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"
PARTNER_REGISTRY=$(jq '.partner_registry // {}' "$PREFS" 2>/dev/null || echo '{}')

$ARGUMENTS を解析します:

  • --list を含む場合 → 登録済みインテグレーションの一覧表示を実行して終了
  • それ以外の場合 → サービス名を最初の位置引数としてオンボーディングフローを実行

OPS ► INTEGRATE

登録済みインテグレーションの一覧表示(--list)

jq -r '.partner_registry // {} | to_entries[] | "\(.key): \(.value.base_url) [\(.value.auth_type)]"' "$PREFS" 2>/dev/null

表形式で表示します:

Registered integrations:
  hubspot       https://api.hubapi.com          [bearer]
  stripe        https://api.stripe.com          [bearer]
  sendgrid      https://api.sendgrid.com        [api-key]

インテグレーションが登録されていない場合:No integrations registered yet. Run /ops:integrate <service-name> to add one.

オンボーディングフロー(5 ステップ)

ステップ 1 — API 詳細を調べる

--url が指定されていない場合は、WebSearch を使用して以下を調べます:

  • 公式 API ドキュメントの URL
  • ベース API URL
  • 認証方式(ベアラートークン/api-key ヘッダー/ベーシック認証/oauth2)
  • API キー生成用 URL(ユーザーが認証情報を取得する場所)
  • ヘルスチェック/テスト用エンドポイント(例:/healthz、/v1/ping、/me)
ステップ 2 — ユーザーに確認する

AskUserQuestion を使って調査結果を提示します(選択肢は 4 件以内):

Found: <service-name> API — Base URL: <url> — Auth: <auth-type>
[Looks correct — continue]  [Change base URL]  [Change auth type]  [Cancel]

「ベース URL を変更」を選択した場合:新しい URL を自由入力できる AskUserQuestion を表示します。 「認証方式を変更」を選択した場合:AskUserQuestion を表示します(選択肢は 4 件以内):[bearer] [api-key] [basic] [oauth2]

ステップ 3 — 認証情報を収集する
Paste your <service-name> <auth-type> credential (it will be stored locally only)
[Paste now]  [Configure later]

「今すぐ貼り付け」を選択した場合:自由入力の AskUserQuestion で認証情報を収集します。キー名は次のように生成します:<lowercase_service_name>_api_key

アトミックな一時ファイルの置き換えを使って、preferences.json に書き込みます:

tmp=$(mktemp)
jq --arg k "$KEY_NAME" --arg v "$CREDENTIAL" '.[$k] = $v' "$PREFS" > "$tmp" && mv "$tmp" "$PREFS"
ステップ 4 — ヘルスチェック

認証情報を使って、ヘルスチェック/テスト用エンドポイントに Curl します:

# Bearer token
curl -sf -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer ${CREDENTIAL}" \
  "${BASE_URL}${HEALTH_ENDPOINT}"

# API key header (X-Api-Key)
curl -sf -o /dev/null -w "%{http_code}" \
  -H "X-Api-Key: ${CREDENTIAL}" \
  "${BASE_URL}${HEALTH_ENDPOINT}"

# Basic auth
curl -sf -o /dev/null -w "%{http_code}" \
  -u "${CREDENTIAL}:" \
  "${BASE_URL}${HEALTH_ENDPOINT}"

結果を報告します:HTTP 200-299 の場合は ✅、それ以外の場合はステータスコードとともに ⚠️。認証情報がまだ設定されていない場合は、ヘルスチェックをスキップし、⬜ health check skipped — credential not configured と報告します。

ステップ 5 — パートナーレジストリに登録する
tmp=$(mktemp)
jq --arg name "${SERVICE_NAME}" \
   --arg url "${BASE_URL}" \
   --arg auth "${AUTH_TYPE}" \
   --arg key_name "${KEY_NAME}" \
   --arg health "${HEALTH_ENDPOINT}" \
   '.partner_registry[$name] = {base_url: $url, auth_type: $auth, credential_key: $key_name, health_endpoint: $health, added: (now | todate)}' \
   "$PREFS" > "$tmp" && mv "$tmp" "$PREFS"

確認出力:

✅ <service-name> registered in partner registry
   Auth: <auth-type>
   Health: <base-url><health-endpoint>
   Credential key: <key-name>

   Access via: jq '.partner_registry["<service-name>"]' $PREFS

CLI/API リファレンス

# List all registered integrations
jq '.partner_registry' "${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json"

# Look up a specific integration
jq '.partner_registry["hubspot"]' "$PREFS"

# Read a credential for a registered integration
jq -r ".$KEY_NAME" "$PREFS"

# Remove an integration from the registry
jq 'del(.partner_registry["<service-name>"])' "$PREFS" > tmp && mv tmp "$PREFS"

コメント