根據自然語言描述建置完整的 Salesforce Lightning Experience 應用程式。當使用者要求「完整應用程式」、「Lightning 應用程式」、「商業解決方案」、「管理系統」,或描述需要多個相互關聯的 Salesforce 元件(物件、欄位、頁面、索引標籤、安全性)的情境時,使用此技能。以正確的相依順序協調所有必要的中繼資料類型,以產出可部署的應用程式。
產生 Lightning 應用程式
概觀
根據自然語言描述,定義 Lightning 自訂應用程式,並以正確的相依順序協調其相依的中繼資料類型,以建置完整、可部署的 Salesforce Lightning Experience 應用程式。當有可用的專業中繼資料技能時,請呼叫這些技能;若沒有對應技能,則直接產生中繼資料。
使用時機
使用時機:
- 使用者要求「Lightning 應用程式」或「端對端解決方案」
- 使用者說「建置應用程式」、「建立應用程式」、「建置 [類型] 應用程式」(例如專案管理、追蹤等)
- 工作會產生自訂應用程式(CustomApplication)以及支援的中繼資料,而非單獨的物件、頁面或索引標籤
應觸發此技能的範例:
- 「建置一個專案管理 Lightning 應用程式,包含 Tasks、Resources 和 Supplies 物件」
- 「建立一個 LEX 應用程式來追蹤車輛,包含 Lightning 頁面和權限集」
- 「我需要一個太空站管理系統,包含多個物件和關係」
- 「建置一個員工入職 Lightning 應用程式,包含自訂 Lightning 記錄頁面」
不應使用時機:
- 建立單一中繼資料元件(請改用特定的中繼資料技能)
- 疑難排解或除錯現有的中繼資料
- 建置 Salesforce Classic 應用程式(非 Lightning Experience)
- 使用者只要求一個物件、一個頁面或一個權限集(沒有其他元件)
- 使用者只需要建立或設定應用程式容器(將現有索引標籤分組),而不需要其他中繼資料;請改用
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 內容(若要求) |
| Flow | automation-flow-generate |
metadata-experts pipeline |
必須載入技能並執行 pipeline。豁免於 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:資料模型(基礎)
自訂物件(無相依)
↓
自訂欄位(相依:物件存在)
↓
關係(相依:父物件和子物件及欄位皆存在)
此階段的中繼資料類型:
platform-custom-object-generate- 一次,包含所有物件platform-custom-field-generate- 一次,包含所有欄位(包括 Master-Detail、Lookup、Roll-up Summary)
階段 2:商業邏輯(選用 - 僅在要求時)
驗證規則(相依:欄位存在)
↓
Flow(相依:物件、欄位存在)
此階段的中繼資料類型(僅在使用者要求時):
platform-validation-rule-generate- 一次,若提及驗證需求automation-flow-generate- 一次,若提及自動化/工作流程需求
階段 3:使用者介面
清單檢視(相依:物件、欄位存在)
↓
自訂索引標籤(相依:物件存在)
↓
FlexiPage(相依:物件、索引標籤存在)
此階段的中繼資料類型:
platform-list-view-generate- 一次,用於篩選的記錄檢視(若要求)platform-custom-tab-generate- 一次,包含所有物件索引標籤platform-flexipage-generate- 一次,包含所有記錄/首頁/應用程式頁面
階段 4:應用程式組裝
自訂應用程式(相依:索引標籤存在)
此階段的中繼資料類型:
platform-custom-application-generate- 一次,用於建立 Lightning 應用程式容器
階段 5:安全性與存取
權限集(相依:物件、欄位、索引標籤、應用程式存在)
此階段的中繼資料類型:
platform-permission-set-generate- 一次,包含所有權限集及下列存取權限:- 物件(讀取、建立、編輯、刪除)
- 欄位(讀取、編輯)
- 索引標籤(可見)
- 自訂應用程式(可見)
執行工作流程
步驟 1:需求分析與規劃
動作:
- 解析使用者的自然語言請求
- 擷取商業實體(成為自訂物件)
- 擷取屬性/特性(成為自訂欄位)
- 識別關係(Master-Detail、Lookup)
- 偵測驗證需求(成為驗證規則)
- 偵測自動化需求(成為 Flow)
- 識別使用者角色(提供權限集參考)
輸出:建置計畫
產生結構化計畫,列出:
Lightning 應用程式建置計畫:[應用程式名稱]
資料模型:
- 自訂物件:[列出物件名稱]
- 自訂欄位:[依物件分組列出]
- 關係:[列出 M-D 和 Lookup 關係]
商業邏輯(若適用):
- 驗證規則:[列出物件和規則名稱]
- Flow:[列出流程名稱和類型]
使用者介面:
- 清單檢視(若要求):[列出物件和檢視名稱]
- 自訂索引標籤:[列出物件]
- FlexiPage:[列出頁面名稱和類型]
- 自訂應用程式:[應用程式名稱]
安全性:
- 權限集:[列出用途]
各類型執行(每個類型的技能 + API 內容):
- CustomObject:載入 platform-custom-object-generate + 呼叫 salesforce-api-context
- CustomField:載入 platform-custom-field-generate + 呼叫 salesforce-api-context
- ValidationRule:載入 platform-validation-rule-generate + 呼叫 salesforce-api-context(若要求)
- Flow:載入 automation-flow-generate + 執行 metadata-experts pipeline(若要求)
- ListView:載入 platform-list-view-generate + 呼叫 salesforce-api-context(若要求)
- CustomTab:載入 platform-custom-tab-generate + 呼叫 salesforce-api-context
- FlexiPage:載入 platform-flexipage-generate + 呼叫 salesforce-api-context
- CustomApplication:載入 platform-custom-application-generate + 呼叫 salesforce-api-context
- PermissionSet:載入 platform-permission-set-generate + 呼叫 salesforce-api-context
在寫入檔案前發出的狀態行:
- `type=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none>`
- Flow 例外:`type=Flow skill=complete pipeline=complete`
相依順序:
1. 階段 1:資料模型(物件 -> 欄位)
2. 階段 2:商業邏輯(驗證規則 -> Flow)
3. 階段 3:使用者介面(清單檢視 -> 索引標籤 -> 頁面)
4. 階段 4:應用程式組裝(應用程式)
5. 階段 5:安全性(權限集)
步驟 2:各類型執行
針對每個中繼資料類型,一次一個類型,執行以下四個步驟。在繼續下一個類型之前,完成目前類型的全部四個步驟。請勿跳過任何步驟。
| 步驟 | 要做什麼 | 為什麼 |
|---|---|---|
| ① 載入技能 | 搜尋並閱讀各類型的 SKILL.md | 提供 XML 結構、必要元素、命名規則和驗證限制 |
| ② 呼叫 API 內容 | 使用 salesforce-api-context 工具,針對此中繼資料類型呼叫,可使用以下工具:get_metadata_type_sections、get_metadata_type_context、get_metadata_type_fields、get_metadata_type_fields_properties、search_metadata_types |
提供目前有效的值 — 允許的列舉值、必要與選用欄位、此 API 版本的子類型。技能提供結構;API 內容提供版本特定的準確性。 |
| ③ 記錄狀態 | 發出:type=<Type> skill=complete mcp=complete|unavailable mcp_tools=<tool-list|none> |
確認在寫入任何檔案之前已嘗試兩個步驟,並記錄使用了哪些 API 內容工具 |
| ④ 產生檔案 | 為此類型產生所有檔案,然後檢查點 | 僅在 ①②③ 完成後。驗證,然後繼續下一個類型。 |
請勿將 ① 和 ② 合併為單一動作,或在完成 ① 後跳過 ②。 它們是不同目的的獨立步驟。載入技能後,您可能覺得可以開始產生 — 請停下來,先執行 ②。
如果實際嘗試後 salesforce-api-context 仍不可用,請記錄 mcp=unavailable,並僅使用技能知識產生。完全未嘗試 ② 是錯誤。
1. 自訂物件
- ① 載入技能:閱讀
platform-custom-object-generateSKILL.md - ② API 內容:呼叫
salesforce-api-context以取得 CustomObject - ③ 狀態:
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. Flow(僅在要求時)
- ① 載入技能:閱讀
automation-flow-generateSKILL.md - ② Pipeline:執行
metadata-experts/execute_metadata_action三步驟 pipeline(豁免於salesforce-api-context) - ③ 狀態:
type=Flow skill=complete pipeline=complete - ④ 產生 + 檢查點:透過 pipeline 產生所有 Flow 檔案,然後繼續 #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. FlexiPage
- ① 載入技能:閱讀
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 結構組織:
-
中繼資料檔案 - 每個元件一個檔案,依類型組織:
force-app/main/default/ ├── objects/ # 自訂物件 (.object-meta.xml) ├── fields/ # 自訂欄位 (.field-meta.xml) ├── tabs/ # 自訂索引標籤 (.tab-meta.xml) ├── flexipages/ # Lightning 頁面 (.flexipage-meta.xml) ├── applications/ # 自訂應用程式 (.app-meta.xml) ├── permissionsets/ # 權限集 (.permissionset-meta.xml) ├── flows/ # Flow (.flow-meta.xml) - 若適用 └── objects/.../validationRules/ # 驗證規則 (.validationRule-meta.xml) - 若適用 -
部署資訊清單 (
package.xml)- 列出所有元件,包含正確的 API 版本
- 依中繼資料類型以相依順序組織
- 可直接用於 Salesforce CLI 部署或 Metadata API 部署
-
建置摘要報告 - 一個 Markdown 檔案,列出:
- 建立的每個元件
- 元件類型和 API 名稱
- 檔案路徑位置
- 相依關係
- 任何警告或建議
摘要結構範例:
Lightning 應用程式建置完成:專案管理應用程式
已產生的中繼資料:
1 自訂物件
- 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 自訂欄位
- 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
[... 等等 ...]
3 自訂索引標籤
- Project__c -> force-app/main/default/tabs/Project__c.tab-meta.xml
[... 等等 ...]
4 Lightning 記錄頁面
- Project_Record_Page -> force-app/main/default/flexipages/Project_Record_Page.flexipage-meta.xml
[... 等等 ...]
5 自訂應用程式
- Project_Management -> force-app/main/default/applications/Project_Management.app-meta.xml
6 權限集
- Project_Manager -> force-app/main/default/permissionsets/Project_Manager.permissionset-meta.xml
- Project_User -> force-app/main/default/permissionsets/Project_User.permissionset-meta.xml
警告:無
驗證
在向使用者呈現完成的建置之前,驗證跨元件完整性:
- [ ] 物件-索引標籤涵蓋範圍:每個自訂物件至少有一個自訂索引標籤
- [ ] 關係完整性:關係中參考的每個自訂物件(父或子)都存在於建置中
- [ ] 頁面中的欄位參考:FlexiPage 中參考的每個欄位都存在於對應的物件上
- [ ] 應用程式中的索引標籤參考:自訂應用程式中參考的每個索引標籤都已成功建立
- [ ] 權限集完整性:權限集授予所有產生物件、欄位、索引標籤和應用程式的存取權限
- [ ] 無孤立元件:沒有無物件的索引標籤、沒有無對應索引標籤的頁面、沒有無索引標籤的應用程式
- [ ] 部署資訊清單完整性:
package.xml包含所有產生的元件,並以正確的相依順序排列
驗證失敗處理(類別 2):
- 若驗證失敗,請在建置摘要報告的
VALIDATION WARNINGS區段中包含失敗的檢查項目 - 這些是產生後的問題 — 請勿阻擋建置的交付,但需清楚溝通需要人工審查或修正的項目
- 針對每個失敗的驗證檢查提供具體的修正步驟
注意:個別元件驗證(保留字、名稱長度、欄位類型等)由專業中繼資料技能處理,此處不需重新驗證。
錯誤處理
類別 1:停止並詢問使用者
在以下情況停止執行並要求澄清:
- 使用者請求過於模糊,無法擷取任何物件或欄位
- 偵測到衝突的需求(例如「設為私人」+「每個人都應該看到」)
- 偵測到無效的 Salesforce 命名(保留字,如
Order、Group)
類別 2:產生後警告(記錄警告,繼續)
在以下情況記錄警告並繼續:
- 跨元件驗證檢查失敗(例如 FlexiPage 中參考的欄位不存在於物件上)
- 選用元件產生失敗(例如清單檢視產生有輕微問題)
- 驗證規則或 Flow 有輕微輸出問題
警告模式:
警告:[元件類型] 產生時遇到問題
元件:[名稱]
問題:[描述]
影響:[哪些功能無法運作]
建議:[如何手動修正]
繼續處理其餘元件...
最佳實務
1. 始終遵循相依順序
切勿依序呼叫技能。欄位需要物件,頁面需要索引標籤,應用程式需要索引標籤。
2. 有可用技能時使用技能
不要重新發明輪子。專業技能具有欄位特定的驗證,可防止部署錯誤。
3. 產生合理的預設值
當使用者未指定細節時:
- 對人員實體使用文字名稱欄位
- 對交易使用 AutoNumber
- 對使用者導向的物件啟用搜尋和報告
- 根據關係設定 sharingModel
4. 在建置前驗證
檢查:
- API 名稱中的保留字
- 關係限制(每個物件最多 2 個 M-D)
- 名稱長度限制
- 重複名稱






