using-backstage-backend-system について
Backstage のバックエンドプラグイン、モジュール、拡張ポイントを定義するためのスキルです。適切な構成の選び方と、登録・依存関係・拡張ポイントの設定方法を説明します。
主な機能
- 01プラグインとモジュールの構成指針
- 02拡張ポイントの定義パターン
- 03登録と依存関係の設定
- 04プラグインとモジュールのID規則
- 05スコープ付きサービスとルートサービスの違い
活用シーン
- 01バックエンドプラグインの作成
- 02既存プラグイン用モジュールの構築
- 03プラグインとモジュールの選択
- 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.mdmodules.mdplugin-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)からエクスポートされた拡張ポイントに依存します。プラグインのメインパッケージには依存しません。
コメント
Markdown 対応