mcpField
N
netbox-integration-best-practices

netbox-integration-best-practices

github.com/netboxlabs開発31171 回インストール38 週間前に更新
リポジトリ

netbox-integration-best-practices について

NetBox Integration Best Practices Skillは、NetBoxのREST APIとGraphQL APIを使う開発者向けに、連携と自動化の指針を提供します。認証、ページネーション、性能、データ取り込み、ブランチのワークフローを扱い、プラグイン開発やNetBox管理は対象外です。

主な機能

  1. 01REST API連携の実践ガイド
  2. 02GraphQLクエリとページネーションの指針
  3. 03トークン認証とセキュリティの助言
  4. 04性能改善とフィルタリングの推奨事項
  5. 05Diodeによるデータ取り込みパターン
  6. 06ブランチプラグインのライフサイクル解説

活用シーン

  1. 01NetBox API自動化の計画
  2. 02既存の連携コードのレビュー
  3. 03API性能問題の調査
  4. 04NetBoxデータ取り込みワークフローの設計

インストール

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

$npx skills add https://github.com/netboxlabs/netbox-best-practices --skill netbox-integration-best-practices

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
netbox-integration-guidelines.md
references/rules/
_sections.md
_template.md
auth-provisioning-endpoint.md
auth-use-v2-tokens.md
data-custom-fields.md
data-dependency-order.md
data-ipam-hierarchy.md
data-natural-keys.md
data-site-hierarchy.md
data-tags-usage.md
data-tenant-isolation.md
graphql-always-paginate.md
graphql-avoid-nested-filters.md
graphql-calibrate-optimizer.md
graphql-complexity-budgets.md
graphql-filter-by-id.md
graphql-max-depth.md
graphql-pagination-at-each-level.md
graphql-prefer-filters.md
graphql-select-only-needed.md
graphql-use-query-optimizer.md
graphql-vs-rest-decision.md
integ-branch-api-workflow.md
integ-branch-async-operations.md
integ-branch-context-header.md
integ-change-tracking.md
integ-diode-ingestion.md
integ-pynetbox-client.md
integ-webhook-configuration.md

詳細

NetBox 統合ベストプラクティス Skill

この Skill は、NetBox の REST API および GraphQL API を使用した統合と自動化を構築するためのベストプラクティス ガイダンスを提供します。

対象読者

  • NetBox API 上に統合を構築するエンジニア
  • Claude を使用した新しい自動化を計画しているチーム
  • NetBox API のベストプラクティスを学ぶ開発者

スコープ: この Skill は API 統合パターンを扱います。プラグイン開発、カスタムスクリプト、NetBox の運用管理は対象外です。

NetBox のバージョン要件

機能必要なバージョン
REST APIすべてのバージョン
GraphQL API2.9+
v2 トークン4.5+ (これを使用してください!)
v1 トークンの非推奨化4.7+ (これより前に移行してください)

主要なターゲット: NetBox 4.4+、v2 トークン機能には 4.5+。

この Skill を適用すべき場面

次の場合にこれらのプラクティスを適用してください:

  • 新しい NetBox API 統合を構築するとき
  • 既存の統合コードをレビューするとき
  • パフォーマンスの問題をトラブルシューティングするとき
  • 自動化アーキテクチャを計画するとき
  • NetBox とやり取りするスクリプトを作成するとき

優先度レベル

レベル説明対応
CRITICALセキュリティ脆弱性、データ損失、深刻なパフォーマンス問題直ちに修正する必要があります
HIGHパフォーマンス/信頼性への重大な影響早急に修正すべきです
MEDIUM注目すべき改善、ベストプラクティス対応を計画してください
LOW軽微な改善、任意都合のよいときに検討してください

クイックリファレンス

認証
  • NetBox 4.5+ では v2 トークンを使用: Bearer nbt_<key>.<token>
  • NetBox 4.7 より前に v1 から移行 (非推奨化が計画されています)
REST API
  • 常にページネーション: ?limit=100 (最大 1000)
  • 部分更新には PUT ではなく PATCH を使用
  • リスト操作には ?brief=True を使用
  • config_context を除外: ?exclude=config_context (パフォーマンスへの大きな影響)
  • 大規模環境では ?q= 検索フィルターを避け、具体的なフィルターを使用
  • 一括操作は JSON 配列を伴うリストエンドポイントを使用 (個別のエンドポイントではない)
GraphQL
  • クエリオプティマイザーを使用: netbox-graphql-query-optimizer
  • すべてのリストクエリで 常にページネーション
  • ネストの すべてのレベルでページネーション
  • 大規模環境でのオフセットページネーションに注意: 深いオフセットは低速です。4.5.x では ID 範囲フィルタリングを、4.6.0+ ではカーソルベースを使用してください (#21110)
  • 必要なフィールドのみをリクエスト
  • 深さは 3 以下に保ち、5 を超えないこと
パフォーマンス
  • デバイスリストから config_context を除外
  • 大規模なリストには brief モードを使用
  • 独立したリクエストを並列化
データ取り込み (Diode)
  • 大量のデータ取り込みには、直接 API ではなく Diode を使用
  • 依存関係は ID ではなく名前で指定—Diode が解決または作成します
  • 依存関係の順序は不要—Diode がオブジェクト作成順を処理します
  • Python では pip install netboxlabs-diode-sdk を使用
  • 読み取りには REST/GraphQL API を使用し、書き込み/投入には Diode を使用
ブランチング (プラグイン)

netbox-branching プラグインが必要です。

  • ライフサイクル: 作成 → 待機 (PROVISIONING→READY) → 作業 → 同期 → マージ
  • コンテキストヘッダー: X-NetBox-Branch: {schema_id} (名前ではなく 8 文字の ID)
  • 非同期操作: 同期/マージ/リバートは Job オブジェクトを返します—完了をポーリングしてください
  • ドライラン: すべての非同期操作は検証用に {"commit": false} を受け付けます

カテゴリ別のルール

認証ルール
ルール影響説明
auth-use-v2-tokensCRITICALNetBox 4.5+ では v2 トークンを使用
auth-provisioning-endpointMEDIUMトークンの自動作成にはプロビジョニングエンドポイントを使用
REST API ルール
ルール影響度説明
rest-list-endpoint-bulk-opsCRITICAL一括操作にはリストエンドポイントを使用する
rest-pagination-requiredHIGHリストリクエストでは常にページネーションを行う
rest-patch-vs-putHIGH部分更新には PATCH を使用する
rest-brief-modeHIGHリストには ?brief=True を使用する
rest-field-selectionHIGH?fields= を使用してフィールドを選択する
rest-exclude-config-contextHIGHデバイスリストから config_context を除外する
rest-avoid-search-filter-at-scaleHIGH大規模データセットでは q= を避ける
rest-filtering-expressionsMEDIUMルックアップ式を使用する
rest-custom-field-filtersMEDIUMカスタムフィールドでフィルタリングする
rest-nested-serializersLOWネストされたシリアライザーを理解する
rest-ordering-resultsLOWordering パラメータを使用する
rest-options-discoveryLOW検出には OPTIONS を使用する
GraphQL ルール
ルール影響度説明
graphql-use-query-optimizerCRITICALクエリオプティマイザーを使用する
graphql-always-paginateCRITICALすべてのリストクエリでページネーションを行う
graphql-pagination-at-each-levelHIGHネストされたリストでページネーションを行う
graphql-select-only-neededHIGH必要なフィールドのみをリクエストする
graphql-calibrate-optimizerHIGH本番環境に対してキャリブレーションする
graphql-max-depthHIGH深さを 3 以下に保つ
graphql-prefer-filtersMEDIUMサーバー側でフィルタリングする
graphql-vs-rest-decisionMEDIUM適切な API を選択する
graphql-complexity-budgetsLOW複雑さの予算を設定する
パフォーマンスルール
ルール影響度説明
perf-exclude-config-contextHIGHconfig_context を除外する
perf-brief-mode-listsHIGHリストには brief モードを使用する
データモデリングルール
ルール影響度説明
data-dependency-orderCRITICAL依存関係の順序でオブジェクトを作成する
data-site-hierarchyMEDIUMサイト階層を理解する
data-ipam-hierarchyMEDIUMIPAM 階層を理解する
data-custom-fieldsMEDIUMカスタムフィールドを適切に使用する
data-tags-usageMEDIUM分類にタグを使用する
data-tenant-isolationMEDIUM分離にテナントを使用する
data-natural-keysMEDIUMナチュラルキーを使用する
統合ルール
ルール影響度説明
integ-diode-ingestionHIGH大量データの取り込みには Diode を使用します
integ-pynetbox-clientHIGHPython には pynetbox を使用します
integ-branch-api-workflowHIGHブランチングのライフサイクル全体(プラグイン)
integ-branch-context-headerHIGHX-NetBox-Branch ヘッダーによるブランチコンテキスト(プラグイン)
integ-branch-async-operationsMEDIUM同期/マージ/リバートのジョブポーリング(プラグイン)
integ-webhook-configurationMEDIUMWebhook を構成します
integ-change-trackingLOWオブジェクトの変更を照会します

外部リファレンス

公式ドキュメント
必須ツール
コミュニティ

リファレンスドキュメント

ドキュメント目的
HUMAN.mdエンジニア向けの人間が読めるガイド
netbox-integration-guidelines.md包括的な技術リファレンス

コメント