platform-lightning-app-coordinate について
自然言語の要件から、デプロイ可能な Salesforce Lightning Experience アプリを計画・生成するスキルです。依存関係に沿ってメタデータを調整し、利用可能な場合は専用生成スキルと API コンテキストを使います。
主な機能
- 01アプリ要件をビルド計画に整理
- 02依存順に沿ったメタデータ生成
- 03専用メタデータ生成スキルの連携
- 04API コンテキストによるメタデータ検証
- 05Salesforce DX プロジェクトファイルの組み立て
活用シーン
- 01カスタムオブジェクト、項目、リレーションを含むアプリの構築
- 02ページ、タブ、権限を含むアプリの作成
- 03必要な入力規則や Flow の追加
- 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-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください |
| カスタム項目 | platform-custom-field-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください |
| カスタムタブ | platform-custom-tab-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください |
| FlexiPage | platform-flexipage-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください |
| カスタムアプリケーション | platform-custom-application-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください |
| リストビュー | platform-list-view-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください(要求された場合) |
| 入力規則 | platform-validation-rule-generate | salesforce-api-context | スキルを必ず読み込み、API コンテキストを呼び出してください(要求された場合) |
| フロー | automation-flow-generate | metadata-experts パイプライン | スキルを必ず読み込み、パイプラインを実行してください。salesforce-api-context は不要です。 |
| 権限セット | platform-permission-set-generate | salesforce-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)
このフェーズのメタデータ型:
platform-custom-object-generate- すべてのオブジェクトをまとめて 1 回platform-custom-field-generate- すべての項目をまとめて 1 回(主従関係、参照関係、積み上げ集計を含む)
フェーズ 2:ビジネスロジック(任意 - リクエストがあった場合のみ)
Validation Rules (depends on: Fields exist)
↓
Flows (depends on: Objects, Fields exist)
このフェーズのメタデータ型(ユーザーからリクエストがあった場合のみ):
platform-validation-rule-generate- 検証要件が示された場合に 1 回automation-flow-generate- 自動化/ワークフロー要件が示された場合に 1 回
フェーズ 3:ユーザーインターフェース
List Views (depends on: Objects, Fields exist)
↓
Custom Tabs (depends on: Objects exist)
↓
FlexiPages (depends on: Objects, Tabs exist)
このフェーズのメタデータ型:
platform-list-view-generate- フィルター済みレコードビュー用に 1 回(リクエストがあった場合)platform-custom-tab-generate- すべてのオブジェクトタブをまとめて 1 回platform-flexipage-generate- すべてのレコード/ホーム/アプリページをまとめて 1 回
フェーズ 4:アプリケーションの組み立て
Custom Application (depends on: Tabs exist)
このフェーズのメタデータ型:
platform-custom-application-generate- Lightning アプリコンテナを作成するために 1 回
フェーズ 5:セキュリティとアクセス
Permission Sets (depends on: Objects, Fields, Tabs, App exist)
このフェーズのメタデータ型:
platform-permission-set-generate- すべての権限セットと以下へのアクセス権をまとめて 1 回- オブジェクト(参照、作成、編集、削除)
- 項目(参照、編集)
- タブ(表示)
- カスタムアプリケーション(表示)
実行ワークフロー
ステップ 1:要件の分析と計画
アクション:
- ユーザーの自然言語によるリクエストを解析する
- ビジネスエンティティを抽出する(カスタムオブジェクトになる)
- 属性/プロパティを抽出する(カスタム項目になる)
- 関係を特定する(主従関係、参照関係)
- 検証要件を検出する(入力規則になる)
- 自動化要件を検出する(フローになる)
- ユーザーペルソナを特定する(権限セットの参考にする)
出力:構築計画
以下を一覧にした構造化計画を生成します:
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-generateSKILL.md を読む - ② API コンテキスト:CustomObject に対して
salesforce-api-contextを呼び出す - ③ ステータス:
type=CustomObject skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべてのカスタムオブジェクトファイルを生成してから、#2 に進む 2. カスタム項目
- ① スキルを読み込む:
platform-custom-field-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを CustomField に対して呼び出します - ③ ステータス:
type=CustomField skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべてのカスタム項目ファイルを生成してから、#3 に進みます
3. 検証ルール(リクエストがあった場合のみ)
- ① スキルを読み込む:
platform-validation-rule-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを ValidationRule に対して呼び出します - ③ ステータス:
type=ValidationRule skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべての検証ルールファイルを生成してから、#4 に進みます
4. フロー(リクエストがあった場合のみ)
- ① スキルを読み込む:
automation-flow-generateSKILL.md を読みます - ② パイプライン:
salesforce-api-contextの対象外となる、metadata-experts/execute_metadata_actionの3ステップパイプラインを実行します - ③ ステータス:
type=Flow skill=complete pipeline=complete - ④ 生成+チェックポイント:パイプラインを使ってすべてのフローファイルを生成してから、#5 に進みます
5. リストビュー(リクエストがあった場合のみ)
- ① スキルを読み込む:
platform-list-view-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを ListView に対して呼び出します - ③ ステータス:
type=ListView skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべてのリストビューファイルを生成してから、#6 に進みます
6. カスタムタブ
- ① スキルを読み込む:
platform-custom-tab-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを CustomTab に対して呼び出します - ③ ステータス:
type=CustomTab skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべてのカスタムタブファイルを生成してから、#7 に進みます
7. FlexiPages
- ① スキルを読み込む:
platform-flexipage-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを FlexiPage に対して呼び出します - ③ ステータス:
type=FlexiPage skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべての FlexiPage ファイルを生成してから、#8 に進みます
8. カスタムアプリケーション
- ① スキルを読み込む:
platform-custom-application-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを CustomApplication に対して呼び出します - ③ ステータス:
type=CustomApplication skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:カスタムアプリケーションファイルを生成してから、#9 に進みます
9. 権限セット
- ① スキルを読み込む:
platform-permission-set-generateSKILL.md を読みます - ② API コンテキスト:
salesforce-api-contextを PermissionSet に対して呼び出します - ③ ステータス:
type=PermissionSet skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> - ④ 生成+チェックポイント:すべての権限セットファイルを生成します — すべてのタイプが完了
ステップ3:最終成果物の組み立て
すべてのフェーズが完了したら、出力をデプロイ可能な構成にまとめます。
出力
ビルドが完了すると、次のものが生成されます。
-
Salesforce DX プロジェクトディレクトリ:生成されたすべてのメタデータを格納します
- 標準の SFDX 構成に従って整理されます:
force-app/main/default/
- 標準の SFDX 構成に従って整理されます:
-
メタデータファイル — コンポーネントごとに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 -
デプロイメントマニフェスト(
package.xml)- 適切な API バージョンとともに、すべてのコンポーネントを一覧表示します
- 依存関係の順序に従って、メタデータタイプ別に整理します
- Salesforce CLI または Metadata API によるデプロイに対応しています
-
ビルドサマリーレポート — 次の項目を一覧にした 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つ)
- 名前の長さの上限
- 重複する名前