mcpField
P
platform-lightning-app-coordinate

platform-lightning-app-coordinate

github.com/forcedotcom開発1.1k5.6k 回インストール1 日前に更新
リポジトリ

platform-lightning-app-coordinate について

自然言語の要件から、デプロイ可能な Salesforce Lightning Experience アプリを計画・生成するスキルです。依存関係に沿ってメタデータを調整し、利用可能な場合は専用生成スキルと API コンテキストを使います。

主な機能

  1. 01アプリ要件をビルド計画に整理
  2. 02依存順に沿ったメタデータ生成
  3. 03専用メタデータ生成スキルの連携
  4. 04API コンテキストによるメタデータ検証
  5. 05Salesforce DX プロジェクトファイルの組み立て

活用シーン

  1. 01カスタムオブジェクト、項目、リレーションを含むアプリの構築
  2. 02ページ、タブ、権限を含むアプリの作成
  3. 03必要な入力規則や Flow の追加
  4. 04生成したメタデータのデプロイ準備

インストール

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

$npx skills add https://github.com/forcedotcom/sf-skills --skill platform-lightning-app-coordinate

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

詳細

Lightning アプリの生成

概要

自然言語による説明に基づいて、Lightning カスタムアプリを定義し、依存するメタデータ型を正しい依存関係の順序で構成することで、完全かつデプロイ可能な Salesforce Lightning Experience アプリを構築します。利用可能な場合は専門のメタデータスキルを呼び出し、該当するスキルがない場合はメタデータを直接生成します。

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

次の場合に使用してください:

  • ユーザーが「Lightning アプリ」または「エンドツーエンドのソリューション」を求めている
  • ユーザーが「アプリを構築する」「アプリケーションを作成する」「[種類]アプリを構築する」(プロジェクト管理、トラッキングなど)と言っている
  • 単独のオブジェクト、ページ、タブではなく、カスタムアプリ(CustomApplication)とそれを支えるメタデータを作成する

このスキルを使用する例:

  • 「タスク、リソース、備品のオブジェクトを含むプロジェクト管理用の Lightning アプリを構築してください」
  • 「Lightning ページと権限セットを使って車両を管理する LEX アプリを作成してください」
  • 「複数のオブジェクトとリレーションを備えた宇宙ステーション管理システムが必要です」
  • 「カスタム Lightning レコードページを備えた従業員オンボーディング用の Lightning アプリを構築してください」

次の場合は使用しないでください:

  • 単一のメタデータコンポーネントを作成する場合(代わりに該当するメタデータスキルを使用してください)
  • 既存のメタデータのトラブルシューティングやデバッグを行う場合
  • Salesforce Classic アプリを構築する場合(Lightning Experience ではないもの)
  • ユーザーがオブジェクト、ページ、権限セットのいずれか1つだけを求めている場合(ほかの要素は不要)
  • ほかのメタデータを追加せず、既存のタブをグループ化するアプリコンテナの作成または設定だけが必要な場合(代わりに platform-custom-application-generate を使用してください)

メタデータ型の一覧

この表では、Lightning Experience アプリで一般的に必要となるメタデータ型、利用可能なスキル、および API コンテキストの要件を示します。

メタデータ型スキル名API コンテキスト使用ルール
カスタムオブジェクトplatform-custom-object-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
カスタム項目platform-custom-field-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
カスタムタブplatform-custom-tab-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
FlexiPageplatform-flexipage-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
カスタムアプリケーションplatform-custom-application-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
リストビューplatform-list-view-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください(要求された場合)
入力規則platform-validation-rule-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください(要求された場合)
フローautomation-flow-generatemetadata-experts パイプラインスキルを必ず読み込み、パイプラインを実行してください。salesforce-api-context は不要です。
権限セットplatform-permission-set-generatesalesforce-api-contextスキルを必ず読み込み、API コンテキストを呼び出してください
使用ルール

スキルのルール:メタデータ型に対応するスキルがある場合は、そのスキルを必ず読み込んでください。最初にスキルを読み込まず、メタデータを直接生成してはいけません。

API コンテキストのルール:Flow を除くすべてのメタデータ型では、生成前に salesforce-api-context のツールを必ず呼び出してください。API コンテキストを呼び出さずにメタデータを生成してはいけません。スキルは構造とルールを提供し、API コンテキストは現在の API バージョンで有効かどうかを確認します。どちらも不可欠です。

フォールバックのルール:必要なメタデータ型に対応するスキルがない場合は、Salesforce Metadata API とベストプラクティスに関する知識を使ってメタデータを直接生成してください。その場合も、API コンテキストは必要です。

理由:スキルには検証済みのパターンと制約が含まれています。API コンテキストにより、バージョン固有の正確性を確保できます。両方を組み合わせることで、デプロイの失敗を防げます。


依存関係グラフと構築順序

フェーズ 1:データモデル(基盤)
Custom Objects (no dependencies)
    ↓
Custom Fields (depends on: Objects exist)
    ↓
Relationships (depends on: Both parent and child objects + fields exist)

このフェーズのメタデータ型:

  1. platform-custom-object-generate - すべてのオブジェクトをまとめて 1 回
  2. platform-custom-field-generate - すべての項目をまとめて 1 回(主従関係、参照関係、積み上げ集計を含む)
フェーズ 2:ビジネスロジック(任意 - リクエストがあった場合のみ)
Validation Rules (depends on: Fields exist)
    ↓
Flows (depends on: Objects, Fields exist)

このフェーズのメタデータ型(ユーザーからリクエストがあった場合のみ):

  1. platform-validation-rule-generate - 検証要件が示された場合に 1 回
  2. automation-flow-generate - 自動化/ワークフロー要件が示された場合に 1 回
フェーズ 3:ユーザーインターフェース
List Views (depends on: Objects, Fields exist)
    ↓
Custom Tabs (depends on: Objects exist)
    ↓
FlexiPages (depends on: Objects, Tabs exist)

このフェーズのメタデータ型:

  1. platform-list-view-generate - フィルター済みレコードビュー用に 1 回(リクエストがあった場合)
  2. platform-custom-tab-generate - すべてのオブジェクトタブをまとめて 1 回
  3. platform-flexipage-generate - すべてのレコード/ホーム/アプリページをまとめて 1 回
フェーズ 4:アプリケーションの組み立て
Custom Application (depends on: Tabs exist)

このフェーズのメタデータ型:

  1. platform-custom-application-generate - Lightning アプリコンテナを作成するために 1 回
フェーズ 5:セキュリティとアクセス
Permission Sets (depends on: Objects, Fields, Tabs, App exist)

このフェーズのメタデータ型:

  1. platform-permission-set-generate - すべての権限セットと以下へのアクセス権をまとめて 1 回
    • オブジェクト(参照、作成、編集、削除)
    • 項目(参照、編集)
    • タブ(表示)
    • カスタムアプリケーション(表示)

実行ワークフロー

ステップ 1:要件の分析と計画

アクション:

  1. ユーザーの自然言語によるリクエストを解析する
  2. ビジネスエンティティを抽出する(カスタムオブジェクトになる)
  3. 属性/プロパティを抽出する(カスタム項目になる)
  4. 関係を特定する(主従関係、参照関係)
  5. 検証要件を検出する(入力規則になる)
  6. 自動化要件を検出する(フローになる)
  7. ユーザーペルソナを特定する(権限セットの参考にする)

出力:構築計画

以下を一覧にした構造化計画を生成します:

Lightning App Build Plan: [App Name]

DATA MODEL:
- Custom Objects: [list with object names]
- Custom Fields: [list grouped by object]
- Relationships: [list M-D and Lookup relationships]

BUSINESS LOGIC (if applicable):
- Validation Rules: [list with object and rule name]
- Flows: [list with flow name and type]

USER INTERFACE:
- List Views (if requested): [list with object and view name]
- Custom Tabs: [list with object]
- FlexiPages: [list with page name and type]
- Custom Application: [app name]

SECURITY:
- Permission Sets: [list with purpose]

PER-TYPE EXECUTION (skill + API context for each):
- CustomObject: load platform-custom-object-generate + call salesforce-api-context
- CustomField: load platform-custom-field-generate + call salesforce-api-context
- ValidationRule: load platform-validation-rule-generate + call salesforce-api-context (if requested)
- Flow: load automation-flow-generate + run metadata-experts pipeline (if requested)
- ListView: load platform-list-view-generate + call salesforce-api-context (if requested)
- CustomTab: load platform-custom-tab-generate + call salesforce-api-context
- FlexiPage: load platform-flexipage-generate + call salesforce-api-context
- CustomApplication: load platform-custom-application-generate + call salesforce-api-context
- PermissionSet: load platform-permission-set-generate + call salesforce-api-context

STATUS LINES TO EMIT BEFORE FILE WRITES:
- `type=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>`
- Flow exception: `type=Flow skill=complete pipeline=complete`

DEPENDENCY ORDER:
1. Phase 1: Data Model (Objects -> Fields)
2. Phase 2: Business Logic (Validation Rules -> Flows)
3. Phase 3: User Interface (List Views -> Tabs -> Pages)
4. Phase 4: App Assembly (Application)
5. Phase 5: Security (Permission Sets)
ステップ 2:型ごとの実行

メタデータ型ごとに、次の 4 つのステップを 1 つずつ実行します。次の型に進む前に、現在の型について 4 つのステップすべてを完了してください。どのステップも省略しないでください。

ステップ実行内容理由
① スキルを読み込む型ごとの SKILL.md を検索して読み込むXML の構造、必須要素、命名規則、検証制約を確認できます
② API コンテキストを呼び出すget_metadata_type_sections、get_metadata_type_context、get_metadata_type_fields、get_metadata_type_fields_properties、search_metadata_types のうち 1 つ以上を使って、このメタデータ型の salesforce-api-context ツールを呼び出す現在有効な値(許可される列挙値、必須フィールドと任意フィールド、この API バージョンの子型)を確認できます。スキルは構造を提供し、API コンテキストはバージョン固有の正確性を提供します。
③ ステータスを記録するtype=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> を出力するファイルを書き込む前に両方のステップを試みたことを確認し、使用した API コンテキストツールを記録します
④ ファイルを生成するこの型のファイルをすべて生成してから、チェックポイントを作成する①②③ の完了後にのみ実行します。検証してから次の型に進みます。

① と ② を 1 つのアクションにまとめたり、① の完了後に ② を省略したりしないでください。 これらは異なる目的を持つ別々のステップです。スキルを読み込むと、生成の準備ができたと感じるかもしれませんが、いったん止めて、先に ② を実行してください。

実際に試した後も salesforce-api-context を利用できない場合は、mcp=unavailable を記録し、スキルの知識のみを使って生成してください。② をまったく試みないのはバグです。


1. カスタムオブジェクト

  • ① スキルを読み込む:platform-custom-object-generate SKILL.md を読む
  • ② API コンテキスト:CustomObject に対して salesforce-api-context を呼び出す
  • ③ ステータス:type=CustomObject skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべてのカスタムオブジェクトファイルを生成してから、#2 に進む 2. カスタム項目
  • ① スキルを読み込む:platform-custom-field-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を CustomField に対して呼び出します
  • ③ ステータス:type=CustomField skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべてのカスタム項目ファイルを生成してから、#3 に進みます

3. 検証ルール(リクエストがあった場合のみ)

  • ① スキルを読み込む:platform-validation-rule-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を ValidationRule に対して呼び出します
  • ③ ステータス:type=ValidationRule skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべての検証ルールファイルを生成してから、#4 に進みます

4. フロー(リクエストがあった場合のみ)

  • ① スキルを読み込む:automation-flow-generate SKILL.md を読みます
  • ② パイプライン:salesforce-api-context の対象外となる、metadata-experts/execute_metadata_action の3ステップパイプラインを実行します
  • ③ ステータス:type=Flow skill=complete pipeline=complete
  • ④ 生成+チェックポイント:パイプラインを使ってすべてのフローファイルを生成してから、#5 に進みます

5. リストビュー(リクエストがあった場合のみ)

  • ① スキルを読み込む:platform-list-view-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を ListView に対して呼び出します
  • ③ ステータス:type=ListView skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべてのリストビューファイルを生成してから、#6 に進みます

6. カスタムタブ

  • ① スキルを読み込む:platform-custom-tab-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を CustomTab に対して呼び出します
  • ③ ステータス:type=CustomTab skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべてのカスタムタブファイルを生成してから、#7 に進みます

7. FlexiPages

  • ① スキルを読み込む:platform-flexipage-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を FlexiPage に対して呼び出します
  • ③ ステータス:type=FlexiPage skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべての FlexiPage ファイルを生成してから、#8 に進みます

8. カスタムアプリケーション

  • ① スキルを読み込む:platform-custom-application-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を CustomApplication に対して呼び出します
  • ③ ステータス:type=CustomApplication skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:カスタムアプリケーションファイルを生成してから、#9 に進みます

9. 権限セット

  • ① スキルを読み込む:platform-permission-set-generate SKILL.md を読みます
  • ② API コンテキスト:salesforce-api-context を PermissionSet に対して呼び出します
  • ③ ステータス:type=PermissionSet skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>
  • ④ 生成+チェックポイント:すべての権限セットファイルを生成します — すべてのタイプが完了
ステップ3:最終成果物の組み立て

すべてのフェーズが完了したら、出力をデプロイ可能な構成にまとめます。


出力

ビルドが完了すると、次のものが生成されます。

  1. Salesforce DX プロジェクトディレクトリ:生成されたすべてのメタデータを格納します

    • 標準の SFDX 構成に従って整理されます:force-app/main/default/
  2. メタデータファイル — コンポーネントごとに1つのファイルを、タイプ別に整理します。

    force-app/main/default/
    ├── objects/              # Custom Objects (.object-meta.xml)
    ├── fields/               # Custom Fields (.field-meta.xml)
    ├── tabs/                 # Custom Tabs (.tab-meta.xml)
    ├── flexipages/           # Lightning Pages (.flexipage-meta.xml)
    ├── applications/         # Custom Applications (.app-meta.xml)
    ├── permissionsets/       # Permission Sets (.permissionset-meta.xml)
    ├── flows/                # Flows (.flow-meta.xml) - if applicable
    └── objects/.../validationRules/  # Validation Rules (.validationRule-meta.xml) - if applicable
    
  3. デプロイメントマニフェスト(package.xml)

    • 適切な API バージョンとともに、すべてのコンポーネントを一覧表示します
    • 依存関係の順序に従って、メタデータタイプ別に整理します
    • Salesforce CLI または Metadata API によるデプロイに対応しています
  4. ビルドサマリーレポート — 次の項目を一覧にした Markdown ファイルです。

    • 作成したすべてのコンポーネント
    • コンポーネントタイプと API 名
    • ファイルパスの場所
    • 依存関係
    • 警告や推奨事項

サマリー構成の例:

Lightning App Build Complete: Project Management App

METADATA GENERATED:
1 Custom Objects
   - Project__c -> force-app/main/default/objects/Project__c/Project__c.object-meta.xml
   - Task__c -> force-app/main/default/objects/Task__c/Task__c.object-meta.xml
   - Resource__c -> force-app/main/default/objects/Resource__c/Resource__c.object-meta.xml

2 Custom Fields
   - Project__c.Name -> force-app/main/default/objects/Project__c/fields/Name.field-meta.xml
   - Project__c.Status__c -> force-app/main/default/objects/Project__c/fields/Status__c.field-meta.xml
   [... etc ...]

3 Custom Tabs
   - Project__c -> force-app/main/default/tabs/Project__c.tab-meta.xml
   [... etc ...]

4 Lightning Record Pages
   - Project_Record_Page -> force-app/main/default/flexipages/Project_Record_Page.flexipage-meta.xml
   [... etc ...]

5 Custom Application
   - Project_Management -> force-app/main/default/applications/Project_Management.app-meta.xml

6 Permission Sets
   - Project_Manager -> force-app/main/default/permissionsets/Project_Manager.permissionset-meta.xml
   - Project_User -> force-app/main/default/permissionsets/Project_User.permissionset-meta.xml

WARNINGS: None

検証

完成したビルドをユーザーに提示する前に、コンポーネント間の整合性を確認します。

  • オブジェクトとタブの網羅性:すべてのカスタムオブジェクトに、少なくとも1つのカスタムタブがある
  • リレーションの整合性:リレーション(親または子)で参照されているすべてのカスタムオブジェクトが、ビルドに存在する
  • ページ内の項目参照:FlexiPageで参照されているすべての項目が、対応するオブジェクトに存在する
  • アプリ内のタブ参照:カスタムアプリで参照されているすべてのタブが、正常に作成されている
  • 権限セットの完全性:権限セットが、生成されたすべてのオブジェクト、項目、タブ、アプリへのアクセスを許可している
  • 孤立したコンポーネントがないこと:オブジェクトのないタブ、対応するタブのないページ、タブのないアプリがない
  • デプロイメントマニフェストの完全性:package.xml に、生成されたすべてのコンポーネントが適切な依存関係の順序で含まれている

検証失敗時の対応(カテゴリ2):

  • 検証に失敗した場合は、失敗したチェック項目をビルドサマリーレポートの VALIDATION WARNINGS セクションに記載します
  • これらは生成後の問題です。ビルドの提供は止めず、手動での確認や修正が必要な箇所を明確に伝えます
  • 検証に失敗した項目ごとに、具体的な修正手順を提示します

注:個々のコンポーネントの検証(予約語、名前の長さ、項目の種類など)は、専門のメタデータスキルが処理するため、ここで再検証する必要はありません。


エラー処理

カテゴリ1:停止してユーザーに確認

次の場合は実行を停止し、ユーザーに確認を求めます。

  • ユーザーの依頼が曖昧すぎて、オブジェクトや項目を抽出できない
  • 要件に矛盾がある(例:「非公開にする」+「全員が見られるようにする」)
  • Salesforceの無効な命名が検出された(Order、Group などの予約語)
カテゴリ2:生成後の警告(警告を記録して続行)

次の場合は警告を記録し、続行します。

  • コンポーネント間の検証チェックに失敗した(例:FlexiPageで参照されている項目がオブジェクトに存在しない)
  • オプションのコンポーネントの生成に失敗した(例:リストビューの生成に軽微な問題がある)
  • 検証ルールまたはフローの出力に軽微な問題がある

警告の形式:

Warning: [Component Type] generation encountered issue
    Component: [Name]
    Issue: [Description]
    Impact: [What won't work]
    Recommendation: [How to fix manually]
    Continuing with remaining components...

ベストプラクティス

1. 常に依存関係の順序に従う

スキルを順序どおりに実行してください。項目にはオブジェクトが必要で、ページにはタブが、アプリにはタブが必要です。

2. 利用可能な場合はスキルを使用する

一から作り直す必要はありません。専門スキルには、デプロイエラーを防ぐ項目固有の検証機能があります。

3. 適切なデフォルトを設定する

ユーザーが詳細を指定していない場合:

  • 人に関するオブジェクトにはテキスト型の名前項目を使用します
  • トランザクションには自動採番を使用します
  • ユーザー向けのオブジェクトでは検索とレポートを有効にします
  • リレーションに基づいてsharingModelを設定します
4. ビルド前に検証する

次の項目を確認します。

  • API名に予約語が含まれていないこと
  • リレーションの上限(オブジェクトごとに主従関係は最大2つ)
  • 名前の長さの上限
  • 重複する名前

コメント