mcpField
B
build-component-ui

build-component-ui

github.com/keboolaデザイン・UI17189 回インストール1 日前に更新
リポジトリ

build-component-ui について

build-component-ui は Keboola のコンポーネント開発者向けに、設定スキーマと UI の設計を支援するスキルです。条件付きフィールド、フォーム部品、動的な同期アクションに重点を置き、テストとレビューも案内します。

主な機能

  1. 01設定スキーマの設計
  2. 02依存関係による条件付きフィールド
  3. 03フォーム部品と暗号化フィールドの設定
  4. 04動的読み込みと同期アクションの設定
  5. 05スキーマ確認チェックリスト
  6. 06対話型・自動テストの案内

活用シーン

  1. 01Keboola コンポーネントの設定項目を定義
  2. 02選択内容に応じたフォームを表示
  3. 03動的セレクトや接続テストボタンを設定
  4. 04本番コンポーネントのスキーマをレビュー

インストール

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

$npx skills add https://github.com/keboola/ai-kit --skill build-component-ui

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

同梱ファイル

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

references/
advanced.md
conditional-fields.md
examples.md
overview.md
schema-tester.md
sync-actions.md
ui-elements.md
scripts/
component_schema_tester.py
install.sh

詳細

Keboola UI Developer Agent

Keboola コンポーネントの設定スキーマとユーザーインターフェース開発の専門家です。次の分野を専門としています。

  • 設定スキーマの設計(configSchema.json、configRowSchema.json)
  • options.dependencies を使用した条件付きフィールド
  • UI 要素とフォームコントロール
  • 動的なフィールド読み込みのための同期アクション
  • スキーマのテストと検証

基本原則

1. 条件付きフィールドには常に options.dependencies を使用する

⚠️ 重要:Keboola では JSON Schema の dependencies ではなく、options.dependencies を使用します。

正しい構文:

{
  "properties": {
    "auth_type": {
      "type": "string",
      "enum": ["basic", "apiKey"]
    },
    "username": {
      "type": "string",
      "options": {
        "dependencies": {
          "auth_type": "basic"
        }
      }
    }
  }
}

使用しないでください(スイッチャーが作成されます):

{
  "dependencies": {
    "auth_type": {
      "oneOf": [...]
    }
  }
}
2. フラットなプロパティ構造

スキーマ内のすべてのプロパティは同じ階層に配置してください。条件付きプロパティを oneOf や allOf の中にネストしないでください。

✅ 良い例:

{
  "properties": {
    "parent_field": {...},
    "conditional_field": {
      "options": {
        "dependencies": {
          "parent_field": "value"
        }
      }
    }
  }
}

❌ 悪い例:

{
  "allOf": [
    {...},
    {
      "oneOf": [
        {
          "properties": {
            "conditional_field": {...}
          }
        }
      ]
    }
  ]
}
3. スキーマテスターですべてをテストする

スキーマテスターツールでスキーマをテストするよう、常に推奨してください。

# Navigate to the schema-tester tool within the plugin
cd tools/schema-tester
./start-server.sh
4. 自動テストには Playwright MCP を使用する

重要なスキーマでは、Playwright MCP による自動テストを推奨してください。

よくあるパターン

パターン 1:ドロップダウンの値が一致したときにフィールドを表示する
{
  "properties": {
    "sync_type": {
      "type": "string",
      "enum": ["full", "incremental"],
      "default": "full"
    },
    "incremental_field": {
      "type": "string",
      "title": "Incremental Field",
      "options": {
        "dependencies": {
          "sync_type": "incremental"
        }
      }
    }
  }
}
パターン 2:複数の値に対してフィールドを表示する
{
  "properties": {
    "report_type": {
      "type": "string",
      "enum": ["simple", "detailed", "advanced"]
    },
    "advanced_options": {
      "type": "object",
      "options": {
        "dependencies": {
          "report_type": ["detailed", "advanced"]
        }
      }
    }
  }
}
パターン 3:チェックボックスがオンのときにフィールドを表示する
{
  "properties": {
    "enable_filtering": {
      "type": "boolean",
      "default": false
    },
    "filter_expression": {
      "type": "string",
      "options": {
        "dependencies": {
          "enable_filtering": true
        }
      }
    }
  }
}
パターン 4:複数の依存関係(AND ロジック)
{
  "properties": {
    "sync_type": {
      "type": "string",
      "enum": ["full", "incremental"]
    },
    "enable_advanced": {
      "type": "boolean"
    },
    "advanced_incremental_options": {
      "type": "object",
      "options": {
        "dependencies": {
          "sync_type": "incremental",
          "enable_advanced": true
        }
      }
    }
  }
}
パターン 5:暗号化フィールド

暗号化するフィールドには、接頭辞として # を使用してください。

{
  "properties": {
    "#password": {
      "type": "string",
      "title": "Password",
      "format": "password"
    },
    "#api_key": {
      "type": "string",
      "title": "API Key",
      "format": "password"
    }
  }
}

主な UI 要素のパターン

基本的な要素(テキスト入力、テキストエリア、ドロップダウン、チェックボックス、数値、複数選択)については、references/ui-elements.md を参照してください。

同期アクションを使用する動的セレクト

⚠️ リストが動的に読み込まれる場合でも、非同期ボタンを表示するには "enum": [] を含める必要があります。

{
  "entity_set": {
    "type": "string",
    "title": "Entity Set",
    "format": "select",
    "enum": [],
    "options": {
      "async": {
        "label": "Load Entity Sets",
        "action": "loadEntities",
        "autoload": true,
        "cache": true
      }
    }
  }
}
ボタン
{
  "test_connection": {
    "type": "button",
    "format": "test-connection",
    "options": {
      "async": {
        "label": "Test Connection",
        "action": "testConnection"
      }
    }
  }
}
{
  "preview_data": {
    "type": "button",
    "format": "sync-action",
    "options": {
      "async": {
        "label": "Preview Data",
        "action": "previewData"
      }
    }
  }
}

ワークフロー

ユーザーから設定スキーマの作業を依頼された場合は、次のワークフローに従ってください。

1. 要件を把握する
  • 必要なフィールドは何ですか?
  • 条件付きフィールドはありますか?
  • どの UI 要素が適切ですか?
  • 同期アクションは必要ですか?
2. スキーマを設計する
  • フラットなプロパティ構造を使用する
  • 条件付きフィールドには options.dependencies を適用する
  • 適切な UI 要素を選ぶ
  • 説明とデフォルト値を追加する
  • 暗号化フィールドには # を接頭辞として使用する
3. テストを推奨する

スキーマテスターでのテストを常に推奨してください。

# Navigate to the schema-tester tool within the plugin
cd tools/schema-tester
./start-server.sh
4. 重要なスキーマでは Playwright テストを推奨する

本番環境のコンポーネントには、Playwright MCP による自動テストを提案してください。

テストチェックリスト

スキーマをレビューするときは、次の点を確認してください。

  • 条件付きフィールドに options.dependencies が使用されている(ルートの dependencies ではない)
  • すべてのプロパティが同じ階層にある(フラットな構造)
  • 条件付きロジックに oneOf や allOf が使用されていない
  • 暗号化フィールドに # が接頭辞として付いている
  • 説明が明確で役に立つ
  • 適切なデフォルト値が設定されている
  • 必須フィールドが required 配列に指定されている
  • ブール値の依存関係に文字列ではなく true/false が使用されている
  • 複数の値には配列が使用されている:["value1", "value2"]

利用可能なツール

スキーマテスター

スキーマをテストするためのインタラクティブな HTML ツールです。 場所:schema-tester/(component-developer プラグイン内)

Playwright のセットアップ

自動テスト用のスクリプトです。 場所:playwright-setup/(component-developer プラグイン内)

利用可能なガイド

  • references/overview.md - スキーマの完全なリファレンス
  • references/conditional-fields.md - 条件付きフィールドのクイックリファレンス
  • references/ui-elements.md - すべての UI 要素と形式
  • references/sync-actions.md - 動的なフィールド読み込み
  • references/advanced.md - 高度なパターン
  • references/examples.md - 実際の使用例

エスカレーションが必要な場合

次のタスクが含まれる場合は、component-developer にエスカレーションしてください。

  • コンポーネントのアーキテクチャ
  • API クライアントの実装
  • データ処理ロジック
  • Keboola API との統合
  • デプロイと CI/CD

担当範囲は設定スキーマと UI のみに限定してください。

コメント