mcpField
U
using-backstage-backend-system

using-backstage-backend-system

github.com/vinzscam開発446 回インストール9 週間前に更新
リポジトリ

using-backstage-backend-system について

Backstage のバックエンドプラグイン、モジュール、拡張ポイントを定義するためのスキルです。適切な構成の選び方と、登録・依存関係・拡張ポイントの設定方法を説明します。

主な機能

  1. 01プラグインとモジュールの構成指針
  2. 02拡張ポイントの定義パターン
  3. 03登録と依存関係の設定
  4. 04プラグインとモジュールのID規則
  5. 05スコープ付きサービスとルートサービスの違い

活用シーン

  1. 01バックエンドプラグインの作成
  2. 02既存プラグイン用モジュールの構築
  3. 03プラグインとモジュールの選択
  4. 04モジュールへの拡張ポイント公開

インストール

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

$npx skills add https://github.com/vinzscam/backstage-skills --skill using-backstage-backend-system

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

同梱ファイル

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

references/
extension-points.md
modules.md
plugin-definition.md

詳細

Backstage バックエンドのシステムパターン

このスキルを使用する場面

  • 新しいバックエンドプラグイン(src/plugin.ts)を定義する場合
  • 別のプラグインを拡張するバックエンドモジュール(src/module.ts)を定義する場合
  • 完全なプラグインとモジュールのどちらを選ぶか判断する場合
  • 他のモジュールがプラグインを拡張できるように、拡張ポイントを公開する場合

適切なパターンを選択する

構築するものパターンリファレンス
プラグイン本体createBackendPlugin({ pluginId, register })references/plugin-definition.md
別のプラグインを拡張するモジュールcreateBackendModule({ pluginId, moduleId, register })references/modules.md
他のモジュールが拡張できる拡張ポイントcreateExtensionPoint<T>({ id })references/extension-points.md

2 つの呼び出しモード

  • スタンドアロン:既存のバックエンドプラグイン/モジュールを編集します。
  • スキャフォールド後(backend-plugin、backend-plugin-module、catalog-provider-module、scaffolder-backend-module に対して creating-backstage-plugin が呼び出す場合):標準的な構成(src/plugin.ts または src/module.ts、および src/index.ts での再エクスポート)を設定します。

よくある注意点

  • 配線に使用するインポートはすべて @backstage/backend-plugin-api から行います。@backstage/core-plugin-api はフロントエンド専用です。
  • register(env) コールバックは、env.registerInit({ deps, async init }) と env.registerExtensionPoint(point, impl) を備えた環境オブジェクトを受け取ります。deps は init 関数が必要とするサービス参照のマップで、init は解決済みのインスタンスを受け取ります。
  • registerInit はプラグイン/モジュールごとに 1 回だけ呼び出せます。registerExtensionPoint は registerInit より前に呼び出す必要があります。
  • プラグインスコープとルートスコープのサービス:多くの参照(logger、httpRouter、database、scheduler、auth、httpAuth、userInfo、cache、discovery、urlReader、lifecycle、permissions)はプラグインスコープです。各プラグインは、プラグインを認識する動作(例:pluginId があらかじめタグ付けされた logger、プラグインごとのスキーマを提供する database)を備えた独自のインスタンスを取得します。6 つの参照(rootConfig、rootLogger、rootLifecycle、rootHealth、rootHttpRouter、rootInstanceMetadata)はルートスコープで、共有インスタンスは 1 つです。どちらもプラグインの register ブロックから依存先として指定できます。違いは動作に関するものであり、注入の構文には関係ありません。
  • プラグインの pluginId とモジュールの moduleId は、パターン [a-z][a-z0-9-]*(文字、数字、ハイフン。先頭は英字)に一致する必要があります。
  • モジュールは、対象プラグインのライブラリパッケージ(例:@backstage/plugin-catalog-node)からエクスポートされた拡張ポイントに依存します。プラグインのメインパッケージには依存しません。

コメント