@salesforce/afv-skills 1.29.0 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/README.md +2 -0
  2. package/package.json +1 -1
  3. package/skills/agentforce-architecture-analyze/README.md +2 -8
  4. package/skills/agentforce-architecture-analyze/SKILL.md +2 -2
  5. package/skills/agentforce-architecture-analyze/references/contract.json +4 -4
  6. package/skills/agentforce-architecture-analyze/references/soql_fields.md +1 -1
  7. package/skills/data360-activate/README.md +0 -1
  8. package/skills/data360-activate/SKILL.md +0 -2
  9. package/skills/data360-connect/README.md +0 -2
  10. package/skills/data360-connect/SKILL.md +0 -2
  11. package/skills/data360-harmonize/SKILL.md +0 -1
  12. package/skills/data360-orchestrate/README.md +0 -7
  13. package/skills/data360-orchestrate/SKILL.md +0 -2
  14. package/skills/data360-prepare/README.md +0 -1
  15. package/skills/data360-prepare/SKILL.md +0 -1
  16. package/skills/data360-query/README.md +0 -1
  17. package/skills/data360-query/SKILL.md +0 -1
  18. package/skills/data360-segment/README.md +0 -1
  19. package/skills/data360-segment/SKILL.md +0 -2
  20. package/skills/experience-cms-brand-apply/SKILL.md +47 -16
  21. package/skills/experience-lwc-generate/README.md +3 -2
  22. package/skills/experience-lwc-generate/references/async-notification-patterns.md +1 -1
  23. package/skills/experience-lwc-generate/references/component-patterns.md +3 -3
  24. package/skills/experience-lwc-generate/references/flow-integration-guide.md +1 -1
  25. package/skills/experience-lwc-generate/references/lwc-best-practices.md +4 -4
  26. package/skills/experience-lwc-generate/references/scoring-and-testing.md +1 -1
  27. package/skills/experience-lwc-generate/references/state-management.md +2 -2
  28. package/skills/experience-lwc-generate/references/triangle-pattern.md +3 -3
  29. package/skills/experience-lwc-generate/scripts/post-tool-validate.py +2 -2
  30. package/skills/experience-lwc-generate/scripts/template_validator.py +1 -1
  31. package/skills/external-diagram-mermaid-generate/README.md +2 -2
  32. package/skills/external-diagram-mermaid-generate/SKILL.md +1 -3
  33. package/skills/external-diagram-mermaid-generate/assets/agentforce/agent-flow.md +4 -4
  34. package/skills/external-diagram-mermaid-generate/assets/architecture/system-landscape.md +1 -1
  35. package/skills/external-diagram-mermaid-generate/assets/datamodel/b2b-commerce-erd.md +3 -3
  36. package/skills/external-diagram-mermaid-generate/assets/datamodel/campaigns-erd.md +1 -1
  37. package/skills/external-diagram-mermaid-generate/assets/datamodel/consent-erd.md +2 -2
  38. package/skills/external-diagram-mermaid-generate/assets/datamodel/files-erd.md +2 -2
  39. package/skills/external-diagram-mermaid-generate/assets/datamodel/forecasting-erd.md +2 -2
  40. package/skills/external-diagram-mermaid-generate/assets/datamodel/fsl-erd.md +2 -2
  41. package/skills/external-diagram-mermaid-generate/assets/datamodel/party-model-erd.md +1 -1
  42. package/skills/external-diagram-mermaid-generate/assets/datamodel/quote-order-erd.md +3 -3
  43. package/skills/external-diagram-mermaid-generate/assets/datamodel/revenue-cloud-erd.md +2 -2
  44. package/skills/external-diagram-mermaid-generate/assets/datamodel/sales-cloud-erd.md +1 -1
  45. package/skills/external-diagram-mermaid-generate/assets/datamodel/salesforce-erd.md +1 -1
  46. package/skills/external-diagram-mermaid-generate/assets/datamodel/scheduler-erd.md +2 -2
  47. package/skills/external-diagram-mermaid-generate/assets/datamodel/service-cloud-erd.md +3 -3
  48. package/skills/external-diagram-mermaid-generate/assets/datamodel/territory-management-erd.md +1 -1
  49. package/skills/external-diagram-mermaid-generate/assets/integration/api-sequence.md +1 -1
  50. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code-pkce.md +1 -1
  51. package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code.md +1 -1
  52. package/skills/external-diagram-mermaid-generate/assets/oauth/client-credentials.md +1 -1
  53. package/skills/external-diagram-mermaid-generate/assets/oauth/device-authorization.md +2 -2
  54. package/skills/external-diagram-mermaid-generate/assets/oauth/jwt-bearer.md +2 -2
  55. package/skills/external-diagram-mermaid-generate/assets/oauth/refresh-token.md +1 -1
  56. package/skills/external-diagram-mermaid-generate/assets/oauth/user-agent-social-sign-on.md +2 -2
  57. package/skills/external-diagram-mermaid-generate/assets/role-hierarchy/user-hierarchy.md +1 -1
  58. package/skills/external-diagram-mermaid-generate/references/color-palette.md +13 -13
  59. package/skills/external-diagram-mermaid-generate/references/diagram-conventions.md +5 -5
  60. package/skills/external-diagram-mermaid-generate/references/erd-conventions.md +1 -1
  61. package/skills/external-diagram-mermaid-generate/references/mermaid-styling.md +2 -2
  62. package/skills/external-diagram-mermaid-generate/references/preview-guide.md +1 -1
  63. package/skills/external-diagram-mermaid-generate/references/usage-examples.md +9 -9
  64. package/skills/external-diagram-mermaid-generate/scripts/README.md +1 -1
  65. package/skills/integration-connectivity-connected-app-configure/README.md +4 -5
  66. package/skills/integration-connectivity-connected-app-configure/SKILL.md +2 -2
  67. package/skills/integration-connectivity-connected-app-configure/references/example-usage.md +7 -7
  68. package/skills/integration-connectivity-connected-app-configure/references/migration-guide.md +1 -1
  69. package/skills/integration-connectivity-connected-app-configure/references/oauth-flows-reference.md +1 -1
  70. package/skills/integration-connectivity-connected-app-configure/references/testing-validation-guide.md +3 -3
  71. package/skills/integration-connectivity-generate/README.md +1 -1
  72. package/skills/integration-connectivity-generate/SKILL.md +6 -0
  73. package/skills/integration-connectivity-generate/assets/callouts/rest-queueable-callout.cls +1 -1
  74. package/skills/integration-connectivity-generate/assets/external-services/external-service-operations.md +1 -1
  75. package/skills/integration-connectivity-generate/assets/soap/wsdl2apex-guide.md +1 -1
  76. package/skills/integration-connectivity-generate/references/callout-patterns.md +4 -0
  77. package/skills/integration-connectivity-generate/references/cdc-guide.md +2 -2
  78. package/skills/integration-connectivity-generate/references/event-driven-architecture-guide.md +5 -5
  79. package/skills/integration-connectivity-generate/references/event-patterns.md +3 -2
  80. package/skills/integration-connectivity-generate/references/external-services-guide.md +4 -1
  81. package/skills/integration-connectivity-generate/references/messaging-api-v2.md +2 -2
  82. package/skills/integration-connectivity-generate/references/named-credentials-automation.md +1 -1
  83. package/skills/integration-connectivity-generate/references/named-credentials-guide.md +12 -2
  84. package/skills/integration-connectivity-generate/references/platform-events-guide.md +3 -3
  85. package/skills/integration-connectivity-generate/references/rest-callout-patterns.md +1 -1
  86. package/skills/integration-connectivity-generate/references/scoring-rubric.md +1 -1
  87. package/skills/integration-connectivity-generate/references/security-best-practices.md +5 -2
  88. package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +16 -5
  89. package/skills/integration-connectivity-generate/scripts/set-api-credential.sh +11 -2
  90. package/skills/integration-connectivity-generate/scripts/suggest_credential_setup.py +4 -3
  91. package/skills/integration-connectivity-generate/scripts/validate_integration.py +1 -1
  92. package/skills/omnistudio-callable-apex-generate/README.md +1 -5
  93. package/skills/omnistudio-callable-apex-generate/SKILL.md +14 -4
  94. package/skills/omnistudio-callable-apex-generate/assets/pattern_callable_vanilla.cls +8 -1
  95. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +1 -1
  96. package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +1 -1
  97. package/skills/omnistudio-datamapper-generate/SKILL.md +1 -1
  98. package/skills/omnistudio-datamapper-generate/assets/completion-summary-template.md +2 -2
  99. package/skills/omnistudio-datamapper-generate/references/best-practices.md +9 -9
  100. package/skills/omnistudio-datamapper-generate/references/naming-conventions.md +6 -6
  101. package/skills/omnistudio-datapacks-deploy/README.md +1 -1
  102. package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +1 -1
  103. package/skills/omnistudio-dependencies-analyze/SKILL.md +12 -5
  104. package/skills/omnistudio-dependencies-analyze/references/dependency-patterns.md +9 -9
  105. package/skills/omnistudio-dependencies-analyze/references/namespace-guide.md +1 -1
  106. package/skills/omnistudio-epc-catalog-generate/README.md +1 -1
  107. package/skills/omnistudio-flexcard-generate/SKILL.md +11 -4
  108. package/skills/omnistudio-flexcard-generate/references/best-practices.md +6 -6
  109. package/skills/omnistudio-flexcard-generate/references/data-binding-guide.md +9 -9
  110. package/skills/omnistudio-integration-procedure-generate/SKILL.md +9 -1
  111. package/skills/omnistudio-integration-procedure-generate/references/element-types.md +3 -3
  112. package/skills/omnistudio-omniscript-generate/SKILL.md +2 -2
  113. package/skills/omnistudio-omniscript-generate/references/best-practices.md +1 -1
  114. package/skills/omnistudio-omniscript-generate/scripts/check-duplicate-omniscript.sh +8 -0
  115. package/skills/omnistudio-omniscript-generate/scripts/deploy-omniscript.sh +8 -0
  116. package/skills/platform-apex-logs-debug/README.md +2 -2
  117. package/skills/platform-apex-logs-debug/references/cli-commands.md +2 -2
  118. package/skills/platform-apex-logs-debug/references/debug-log-reference.md +16 -16
  119. package/skills/platform-apex-logs-debug/references/log-analysis-tools.md +2 -2
  120. package/skills/platform-apex-test-run/README.md +1 -1
  121. package/skills/platform-apex-test-run/references/test-fix-loop.md +2 -2
  122. package/skills/platform-apex-test-run/references/testing-best-practices.md +3 -3
  123. package/skills/platform-data-manage/README.md +4 -4
  124. package/skills/platform-data-manage/references/bulk-testing-example.md +1 -1
  125. package/skills/platform-data-manage/references/crud-workflow-example.md +2 -2
  126. package/skills/platform-data-manage/references/orchestration.md +6 -6
  127. package/skills/platform-flexipage-generate/SKILL.md +281 -346
  128. package/skills/platform-flexipage-generate/references/cli_commands.md +39 -0
  129. package/skills/platform-flexipage-generate/references/flexipage_fieldSection.md +162 -0
  130. package/skills/platform-flexipage-generate/references/flexipage_richText.md +84 -0
  131. package/skills/platform-flexipage-generate/references/identifiers_and_regions.md +167 -0
  132. package/skills/platform-flexipage-generate/references/mcp_action_examples.md +104 -0
  133. package/skills/platform-flexipage-generate/references/record_flexipage_dynamicHighlights.md +119 -0
  134. package/skills/platform-flexipage-generate/references/xml_rules.md +335 -0
  135. package/skills/platform-flexipage-generate/scripts/resolve-component-instructions.sh +42 -0
  136. package/skills/platform-flexipage-generate/scripts/scan-lwc-components.sh +113 -0
  137. package/skills/platform-metadata-deploy/README.md +2 -2
  138. package/skills/platform-metadata-deploy/references/agent-deployment-guide.md +2 -2
  139. package/skills/platform-metadata-deploy/references/deployment-workflows.md +16 -16
  140. package/skills/platform-metadata-deploy/references/orchestration.md +3 -3
  141. package/skills/platform-metadata-deploy/references/trigger-deployment-safety.md +2 -2
  142. package/skills/platform-models-api-configure/SKILL.md +140 -0
  143. package/skills/platform-models-api-configure/scripts/get-orgjwt.sh +48 -0
  144. package/skills/platform-policy-rule-generate/SKILL.md +260 -0
  145. package/skills/platform-policy-rule-generate/references/deploy-errors.md +54 -0
  146. package/skills/platform-policy-rule-generate/references/fixtures-index.md +29 -0
  147. package/skills/platform-policy-rule-generate/references/policy-schema-full.md +250 -0
  148. package/skills/platform-policy-rule-generate/references/templates-access.md +132 -0
  149. package/skills/platform-policy-rule-generate/references/templates-advanced.md +58 -0
  150. package/skills/platform-policy-rule-generate/references/templates-record.md +75 -0
  151. package/skills/platform-policy-rule-generate/references/templates-transform.md +70 -0
  152. package/skills/platform-policy-rule-generate/references/templates.md +10 -0
  153. package/skills/platform-policy-rule-generate/references/ui-compatibility.md +142 -0
  154. package/skills/platform-soql-query/README.md +1 -1
  155. package/skills/platform-soql-query/SKILL.md +1 -1
  156. package/skills/platform-soql-query/references/anti-patterns.md +1 -1
  157. package/skills/platform-soql-query/references/field-coverage-rules.md +1 -1
  158. package/skills/platform-soql-query/references/query-optimization.md +1 -1
  159. package/skills/platform-soql-query/scripts/post-tool-validate.py +3 -3
  160. package/skills/data360-activate/CREDITS.md +0 -5
  161. package/skills/data360-connect/CREDITS.md +0 -5
  162. package/skills/data360-harmonize/CREDITS.md +0 -3
  163. package/skills/data360-orchestrate/CREDITS.md +0 -15
  164. package/skills/data360-orchestrate/UPSTREAM.md +0 -45
  165. package/skills/data360-prepare/CREDITS.md +0 -7
  166. package/skills/data360-query/CREDITS.md +0 -7
  167. package/skills/data360-segment/CREDITS.md +0 -3
  168. package/skills/experience-lwc-generate/CREDITS.md +0 -5
  169. package/skills/external-diagram-mermaid-generate/CREDITS.md +0 -46
  170. package/skills/external-diagram-visual-generate/CREDITS.md +0 -80
  171. package/skills/external-diagram-visual-generate/README.md +0 -83
  172. package/skills/external-diagram-visual-generate/SKILL.md +0 -207
  173. package/skills/external-diagram-visual-generate/assets/architecture/integration-flow.md +0 -55
  174. package/skills/external-diagram-visual-generate/assets/erd/core-objects.md +0 -131
  175. package/skills/external-diagram-visual-generate/assets/erd/custom-objects.md +0 -60
  176. package/skills/external-diagram-visual-generate/assets/lwc/dashboard-card.md +0 -45
  177. package/skills/external-diagram-visual-generate/assets/lwc/data-table.md +0 -57
  178. package/skills/external-diagram-visual-generate/assets/lwc/record-form.md +0 -60
  179. package/skills/external-diagram-visual-generate/assets/review/apex-review.md +0 -57
  180. package/skills/external-diagram-visual-generate/assets/review/lwc-review.md +0 -48
  181. package/skills/external-diagram-visual-generate/references/architect-aesthetic-guide.md +0 -257
  182. package/skills/external-diagram-visual-generate/references/examples-index.md +0 -35
  183. package/skills/external-diagram-visual-generate/references/gemini-cli-setup.md +0 -65
  184. package/skills/external-diagram-visual-generate/references/interview-questions.md +0 -529
  185. package/skills/external-diagram-visual-generate/references/iteration-workflow.md +0 -173
  186. package/skills/external-diagram-visual-generate/scripts/check-prerequisites.sh +0 -101
  187. package/skills/external-diagram-visual-generate/scripts/generate_image.py +0 -243
  188. package/skills/integration-connectivity-connected-app-configure/CREDITS.md +0 -3
  189. package/skills/integration-connectivity-generate/CREDITS.md +0 -5
  190. package/skills/omnistudio-callable-apex-generate/CREDITS.md +0 -9
  191. package/skills/omnistudio-datamapper-generate/CREDITS.md +0 -5
  192. package/skills/omnistudio-datapacks-deploy/CREDITS.md +0 -5
  193. package/skills/omnistudio-dependencies-analyze/CREDITS.md +0 -5
  194. package/skills/omnistudio-epc-catalog-generate/CREDITS.md +0 -14
  195. package/skills/omnistudio-flexcard-generate/CREDITS.md +0 -5
  196. package/skills/omnistudio-integration-procedure-generate/CREDITS.md +0 -5
  197. package/skills/omnistudio-omniscript-generate/CREDITS.md +0 -5
  198. package/skills/platform-apex-generate/CREDITS.md +0 -5
  199. package/skills/platform-apex-logs-debug/CREDITS.md +0 -22
  200. package/skills/platform-apex-test-generate/CREDITS.md +0 -5
  201. package/skills/platform-apex-test-run/CREDITS.md +0 -22
  202. package/skills/platform-data-manage/CREDITS.md +0 -5
  203. package/skills/platform-metadata-deploy/CREDITS.md +0 -25
  204. package/skills/platform-soql-query/CREDITS.md +0 -21
  205. /package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/{MyCustomVlocityOpenInterface2.cls → MyCustomClass.cls} +0 -0
@@ -0,0 +1,39 @@
1
+ # CLI Command Reference
2
+
3
+ ## RecordPage with fields
4
+
5
+ ```bash
6
+ sf template generate flexipage \
7
+ --name Account_Custom_Page \
8
+ --template RecordPage \
9
+ --sobject Account \
10
+ --primary-field Name \
11
+ --secondary-fields Phone,Industry,AnnualRevenue \
12
+ --detail-fields Street,City,State,Name,Phone,Email
13
+ ```
14
+
15
+ ## AppPage
16
+
17
+ ```bash
18
+ sf template generate flexipage \
19
+ --name Sales_Dashboard \
20
+ --template AppPage \
21
+ --label "Sales Dashboard"
22
+ ```
23
+
24
+ ## HomePage
25
+
26
+ ```bash
27
+ sf template generate flexipage \
28
+ --name Custom_Home \
29
+ --template HomePage \
30
+ --description "Custom home for sales team"
31
+ ```
32
+
33
+ ## Common Options
34
+
35
+ All templates support:
36
+ - `--output-dir` (default: current directory)
37
+ - `--api-version` (default: latest)
38
+ - `--label` (default: page name)
39
+ - `--description`
@@ -0,0 +1,162 @@
1
+ # flexipage:fieldSection — Field Section
2
+
3
+ ## Purpose
4
+
5
+ Displays fields in a column layout under a labeled section heading.
6
+
7
+ ## Supported Page Types
8
+
9
+ - RecordPage (`main` region or detail tab facets)
10
+
11
+ ## Structure
12
+
13
+ Three-level nesting:
14
+ 1. Template Region (Region type) — contains the fieldSection component
15
+ 2. Column Facets (Facet type) — contains `flexipage:column` components pointing to field facets
16
+ 3. Field Facets (Facet type) — contains `fieldInstance` elements for each column
17
+
18
+ **Critical:** The `columns` property value must match the `<name>` of the facet where the `flexipage:column` components are defined. It is *not* a number.
19
+
20
+ ## Property Table
21
+
22
+ | Property | Type | Required | Default | Description |
23
+ |----------|------|----------|---------|-------------|
24
+ | columns | String (Facet ref) | Yes | — | Reference to the Facet containing `flexipage:column` components |
25
+ | label | String | Yes | — | Section heading displayed to users |
26
+ | horizontalAlignment | Boolean | No | false | Align fields horizontally within columns |
27
+
28
+ ## Property Inference Rules
29
+
30
+ | User Intent | Inferred Properties |
31
+ |-------------|-------------------|
32
+ | "add a field section with {fields}" | Split fields evenly across 2 columns |
33
+ | "section labeled {name}" | `label` = `{name}` |
34
+
35
+ ## XML Example
36
+
37
+ ```xml
38
+ <!-- Field facet for first column -->
39
+ <flexiPageRegions>
40
+ <itemInstances>
41
+ <fieldInstance>
42
+ <fieldInstanceProperties>
43
+ <name>uiBehavior</name>
44
+ <value>required</value>
45
+ </fieldInstanceProperties>
46
+ <fieldItem>Record.Field0</fieldItem>
47
+ <identifier>RecordColumn1Field0</identifier>
48
+ </fieldInstance>
49
+ </itemInstances>
50
+ <itemInstances>
51
+ <fieldInstance>
52
+ <fieldInstanceProperties>
53
+ <name>uiBehavior</name>
54
+ <value>none</value>
55
+ </fieldInstanceProperties>
56
+ <fieldItem>Record.Field1</fieldItem>
57
+ <identifier>RecordColumn1Field1</identifier>
58
+ </fieldInstance>
59
+ </itemInstances>
60
+ <name>Facet-FieldSection-Column1</name>
61
+ <type>Facet</type>
62
+ </flexiPageRegions>
63
+
64
+ <!-- Field facet for second column -->
65
+ <flexiPageRegions>
66
+ <itemInstances>
67
+ <fieldInstance>
68
+ <fieldInstanceProperties>
69
+ <name>uiBehavior</name>
70
+ <value>none</value>
71
+ </fieldInstanceProperties>
72
+ <fieldItem>Record.Field2</fieldItem>
73
+ <identifier>RecordColumn2Field0</identifier>
74
+ </fieldInstance>
75
+ </itemInstances>
76
+ <itemInstances>
77
+ <fieldInstance>
78
+ <fieldInstanceProperties>
79
+ <name>uiBehavior</name>
80
+ <value>none</value>
81
+ </fieldInstanceProperties>
82
+ <fieldItem>Record.Type</fieldItem>
83
+ <identifier>RecordColumn2Field1</identifier>
84
+ </fieldInstance>
85
+ </itemInstances>
86
+ <name>Facet-FieldSection-Column2</name>
87
+ <type>Facet</type>
88
+ </flexiPageRegions>
89
+
90
+ <!-- Columns facet -->
91
+ <flexiPageRegions>
92
+ <itemInstances>
93
+ <componentInstance>
94
+ <componentInstanceProperties>
95
+ <name>body</name>
96
+ <value>Facet-FieldSection-Column1</value>
97
+ </componentInstanceProperties>
98
+ <componentName>flexipage:column</componentName>
99
+ <identifier>flexipage_column1</identifier>
100
+ </componentInstance>
101
+ </itemInstances>
102
+ <itemInstances>
103
+ <componentInstance>
104
+ <componentInstanceProperties>
105
+ <name>body</name>
106
+ <value>Facet-FieldSection-Column2</value>
107
+ </componentInstanceProperties>
108
+ <componentName>flexipage:column</componentName>
109
+ <identifier>flexipage_column2</identifier>
110
+ </componentInstance>
111
+ </itemInstances>
112
+ <name>Facet-FieldSection-Columns</name>
113
+ <type>Facet</type>
114
+ </flexiPageRegions>
115
+
116
+ <!-- Template region with fieldSection component -->
117
+ <flexiPageRegions>
118
+ <itemInstances>
119
+ <componentInstance>
120
+ <componentInstanceProperties>
121
+ <name>columns</name>
122
+ <value>Facet-FieldSection-Columns</value>
123
+ </componentInstanceProperties>
124
+ <componentInstanceProperties>
125
+ <name>horizontalAlignment</name>
126
+ <value>false</value>
127
+ </componentInstanceProperties>
128
+ <componentInstanceProperties>
129
+ <name>label</name>
130
+ <value>Information</value>
131
+ </componentInstanceProperties>
132
+ <componentName>flexipage:fieldSection</componentName>
133
+ <identifier>flexipage_fieldSection</identifier>
134
+ </componentInstance>
135
+ </itemInstances>
136
+ <name>main</name>
137
+ <type>Region</type>
138
+ </flexiPageRegions>
139
+ ```
140
+
141
+ ## uiBehavior Attribute
142
+
143
+ Every `fieldInstance` requires a `uiBehavior` property that controls field editability on the page.
144
+
145
+ | Value | Meaning | When to use |
146
+ |-------|---------|-------------|
147
+ | `none` | Field respects standard editability settings (default) | Standard fields — uses object/layout-level permissions |
148
+ | `required` | Field is required — must be filled before save | Fields that must have a value for the record to be valid |
149
+ | `readonly` | Field is read-only — displayed but not editable | Formula fields, system fields, or fields locked by business rules |
150
+
151
+ **Inference rules:**
152
+ - Default to `none` unless the user specifies otherwise
153
+ - If user says "required" or "mandatory" → use `required`
154
+ - If user says "read-only", "display only", or "locked" → use `readonly`
155
+ - Formula fields and auto-number fields should always be `readonly`
156
+
157
+ ## Edge Cases
158
+
159
+ - `columns` property is a Facet name, not a count — common mistake
160
+ - Split fields roughly evenly across columns
161
+ - Identifiers: `flexipage_fieldSection`, `flexipage_fieldSection2`; columns: `flexipage_column1`, `flexipage_column2`
162
+ - Second fieldSection on same page: all facet names and identifiers must be unique
@@ -0,0 +1,84 @@
1
+ # flexipage:richText — Rich Text
2
+
3
+ ## Purpose
4
+
5
+ Displays HTML-formatted rich text content on a page. Supports text formatting, headings, lists, links, and inline styles. Content is static (not data-bound).
6
+
7
+ ## Supported Page Types
8
+
9
+ - RecordPage
10
+ - AppPage
11
+ - HomePage
12
+
13
+ ## Property Table
14
+
15
+ | Property | Type | Required | Default | Description |
16
+ |----------|------|----------|---------|-------------|
17
+ | richTextValue | String (HTML-encoded) | Yes | — | HTML content, entity-encoded for XML |
18
+ | decorate | Boolean | No | true | Show card-style border/decoration around the content |
19
+
20
+ ## Property Inference Rules
21
+
22
+ | User Intent | Inferred Properties |
23
+ |-------------|-------------------|
24
+ | "add rich text with {content}" | `richTextValue` = HTML-encoded version of content |
25
+ | "add a heading {text}" | `richTextValue` = `&lt;p&gt;&lt;b style=&quot;font-size: 16px;&quot;&gt;{text}&lt;/b&gt;&lt;/p&gt;` |
26
+ | "add a link to {url}" | `richTextValue` = `&lt;p&gt;&lt;a href=&quot;{url}&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;{text}&lt;/a&gt;&lt;/p&gt;` |
27
+ | "no border" or "borderless" | `decorate` = `false` |
28
+ | "with card border" or "in a card" | `decorate` = `true` |
29
+
30
+ ## HTML Encoding Rules
31
+
32
+ **CRITICAL:** The `richTextValue` must be double-encoded for XML:
33
+ 1. Write the desired HTML content
34
+ 2. Entity-encode ALL HTML characters:
35
+ - `&` -> `&amp;` (encode FIRST)
36
+ - `<` -> `&lt;`
37
+ - `>` -> `&gt;`
38
+ - `"` -> `&quot;`
39
+
40
+ **Example:** To display `<b>Hello</b>`, the value must be `&lt;b&gt;Hello&lt;/b&gt;`
41
+
42
+ **Supported HTML tags:**
43
+ - `<p>` — paragraphs (required wrapper for all content)
44
+ - `<b>` — bold
45
+ - `<u>` — underline
46
+ - `<i>` — italic
47
+ - `<a href="..." rel="noopener noreferrer" target="_blank">` — links
48
+ - `<span style="...">` — inline styling
49
+ - `<br>` or `<br />` — line breaks
50
+
51
+ **Supported inline styles:**
52
+ - `font-size: Npx` (e.g., `12px`, `14px`, `16px`, `18px`)
53
+ - `color: #hex` or `color: colorname`
54
+ - `text-align: left|center|right`
55
+ - `background-color: #hex`
56
+
57
+ ## XML Example
58
+
59
+ ```xml
60
+ <itemInstances>
61
+ <componentInstance>
62
+ <componentInstanceProperties>
63
+ <name>richTextValue</name>
64
+ <value>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b style=&quot;font-size: 16px;&quot;&gt;Welcome to the Account Page&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Use this page to manage account details and related records.&lt;/p&gt;</value>
65
+ </componentInstanceProperties>
66
+ <componentInstanceProperties>
67
+ <name>decorate</name>
68
+ <value>true</value>
69
+ </componentInstanceProperties>
70
+ <componentName>flexipage:richText</componentName>
71
+ <identifier>flexipage_richText</identifier>
72
+ </componentInstance>
73
+ </itemInstances>
74
+ ```
75
+
76
+ ## Edge Cases
77
+
78
+ - Never put raw HTML in `<value>` tags — always entity-encode
79
+ - Encode `&` FIRST before encoding `<` and `>` to avoid double-encoding `&amp;lt;`
80
+ - Multiple rich text components on same page: increment identifier (`flexipage_richText`, `flexipage_richText2`)
81
+ - Empty content is invalid — always include at least one `<p>` element
82
+ - Links must include `rel="noopener noreferrer" target="_blank"` for security
83
+ - Can be placed in any region
84
+ - Keep content concise — rich text is for static labels/instructions, not data display
@@ -0,0 +1,167 @@
1
+ # Identifiers, Regions, and Container Facets
2
+
3
+ ## Generating Unique Identifiers
4
+
5
+ **Before generating ANY new identifier or facet name, read the existing XML and extract all `<identifier>` and `<name>` values first.**
6
+
7
+ **Identifier Generation Algorithm**:
8
+ ```text
9
+ 1. Extract ALL existing <identifier> AND <name> values from XML
10
+ 2. Generate base name: {namespace}_{componentType}_{context}
11
+ Examples: "lst_relatedList_contacts", "flexipage_richText_header"
12
+ 3. Find first available number:
13
+ - Try "{base}_1"
14
+ - If exists, try "{base}_2", "{base}_3", etc.
15
+ - Use first available
16
+ ```
17
+
18
+ **Examples**:
19
+ - First related list: `lst_relatedList_contacts`
20
+ - Second related list: `lst_relatedList_contacts_2`
21
+ - First rich text: `flexipage_richText_header`
22
+ - Second rich text: `flexipage_richText_header_2`
23
+ - Field section: `flexipage_fieldSection`
24
+
25
+ **Facet Naming - Two Patterns**:
26
+
27
+ 1. **Named facets** (for major content areas):
28
+ - `detailTabContent` (detail tab content)
29
+ - `maintabs` (main tab container)
30
+ - `sidebartabs` (sidebar tab container)
31
+ - Use when facet represents meaningful content area
32
+
33
+ 2. **UUID facets** (for internal structure):
34
+ - Format: `Facet-{8hex}-{4hex}-{4hex}-{4hex}-{12hex}`
35
+ - Example: `Facet-66d5a4b3-bf14-4665-ba75-1ceaa71b2cde`
36
+ - Use for field section columns, nested containers, anonymous slots
37
+
38
+ **When adding components to existing files:**
39
+ - Check if target facet name already exists
40
+ - If exists: Add new `<itemInstances>` to that existing region (see xml_rules.md section 5 for details)
41
+ - If doesn't exist: Create new region with unique name
42
+
43
+ ---
44
+
45
+ ## Region Selection
46
+
47
+ **Parse regions from file** - don't hardcode names. Templates vary:
48
+ - `flexipage:recordHomeTemplateDesktop` → `header`, `main`, `sidebar`
49
+ - `runtime_service_fieldservice:...` → `header`, `main`, `footer`
50
+ - Others may have different region names
51
+
52
+ **Default placement**: End of target region (after last `<itemInstances>`)
53
+
54
+ **Insertion pattern**:
55
+ ```xml
56
+ <flexiPageRegions>
57
+ <name>main</name> <!-- or whatever region name exists -->
58
+ <type>Region</type>
59
+ <itemInstances><!-- Existing component 1 --></itemInstances>
60
+ <itemInstances><!-- Existing component 2 --></itemInstances>
61
+ <itemInstances>
62
+ <!-- INSERT NEW COMPONENT HERE -->
63
+ </itemInstances>
64
+ </flexiPageRegions>
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Container Components with Facets
70
+
71
+ Components like tabs, accordions, and field sections require a **3-layer facet pattern**. There is NO single "tabs" component — you must use `flexipage:tabset` + `flexipage:tab` + content facets.
72
+
73
+ **The 3-layer tab pattern:**
74
+
75
+ ```xml
76
+ <!-- LAYER 1: Content facets — one per tab's body -->
77
+ <flexiPageRegions>
78
+ <itemInstances>
79
+ <componentInstance>
80
+ <componentName>force:detailPanel</componentName>
81
+ <identifier>force_detailPanel1</identifier>
82
+ </componentInstance>
83
+ </itemInstances>
84
+ <name>detailTabContent</name>
85
+ <type>Facet</type>
86
+ </flexiPageRegions>
87
+
88
+ <flexiPageRegions>
89
+ <itemInstances>
90
+ <componentInstance>
91
+ <componentInstanceProperties>
92
+ <name>relatedListComponentOverride</name>
93
+ <value>NONE</value>
94
+ </componentInstanceProperties>
95
+ <componentName>force:relatedListContainer</componentName>
96
+ <identifier>force_relatedListContainer1</identifier>
97
+ </componentInstance>
98
+ </itemInstances>
99
+ <name>relatedTabContent</name>
100
+ <type>Facet</type>
101
+ </flexiPageRegions>
102
+
103
+ <!-- LAYER 2: Tab definitions facet — each flexipage:tab points to a content facet via "body" -->
104
+ <flexiPageRegions>
105
+ <itemInstances>
106
+ <componentInstance>
107
+ <componentInstanceProperties>
108
+ <name>active</name>
109
+ <value>true</value>
110
+ </componentInstanceProperties>
111
+ <componentInstanceProperties>
112
+ <name>body</name>
113
+ <value>detailTabContent</value>
114
+ </componentInstanceProperties>
115
+ <componentInstanceProperties>
116
+ <name>title</name>
117
+ <value>Standard.Tab.detail</value>
118
+ </componentInstanceProperties>
119
+ <componentName>flexipage:tab</componentName>
120
+ <identifier>flexipage_tab1</identifier>
121
+ </componentInstance>
122
+ </itemInstances>
123
+ <itemInstances>
124
+ <componentInstance>
125
+ <componentInstanceProperties>
126
+ <name>active</name>
127
+ <value>false</value>
128
+ </componentInstanceProperties>
129
+ <componentInstanceProperties>
130
+ <name>body</name>
131
+ <value>relatedTabContent</value>
132
+ </componentInstanceProperties>
133
+ <componentInstanceProperties>
134
+ <name>title</name>
135
+ <value>Standard.Tab.relatedLists</value>
136
+ </componentInstanceProperties>
137
+ <componentName>flexipage:tab</componentName>
138
+ <identifier>flexipage_tab2</identifier>
139
+ </componentInstance>
140
+ </itemInstances>
141
+ <name>maintabs</name>
142
+ <type>Facet</type>
143
+ </flexiPageRegions>
144
+
145
+ <!-- LAYER 3: Tabset in the template region — references the tabs facet -->
146
+ <flexiPageRegions>
147
+ <itemInstances>
148
+ <componentInstance>
149
+ <componentInstanceProperties>
150
+ <name>tabs</name>
151
+ <value>maintabs</value>
152
+ </componentInstanceProperties>
153
+ <componentName>flexipage:tabset</componentName>
154
+ <identifier>flexipage_tabset1</identifier>
155
+ </componentInstance>
156
+ </itemInstances>
157
+ <name>main</name>
158
+ <type>Region</type>
159
+ </flexiPageRegions>
160
+ ```
161
+
162
+ **Critical rules:**
163
+ - Facet regions are **siblings** of template regions (same level), NEVER nested inside them
164
+ - Each `flexipage:tab` has `body` pointing to a content facet name, `title` for the label, and `active` (true/false)
165
+ - The `flexipage:tabset` has a single `tabs` property pointing to the tabs facet name
166
+ - Standard tab titles: `Standard.Tab.detail`, `Standard.Tab.relatedLists`, `Standard.Tab.activity`, `Standard.Tab.news`
167
+ - The component is `flexipage:tabset` — NOT `flexipage:tabs`, `flexipage:tabset2`, or `lightning:tabset`
@@ -0,0 +1,104 @@
1
+ # MCP Action Integration — Examples & Reference
2
+
3
+ Two MCP actions provide component discovery and schema retrieval. Call them via `execute_metadata_action`.
4
+
5
+ ## discoverUiComponents
6
+
7
+ Discovers components available for a page type in the user's org.
8
+
9
+ **When to call:** Tier 2 discovery — after local scan finds no match.
10
+
11
+ **Input:**
12
+ ```json
13
+ execute_metadata_action({
14
+ "actionName": "DISCOVER_UI_COMPONENTS",
15
+ "metadataType": "FLEXI_PAGE",
16
+ "parameters": {
17
+ "pageType": "RECORD_PAGE",
18
+ "pageContext": { "entityName": "Account" },
19
+ "searchQuery": "related list"
20
+ }
21
+ })
22
+ ```
23
+
24
+ **Parameters:**
25
+
26
+ | Param | Type | Required | Description |
27
+ |-------|------|----------|-------------|
28
+ | pageType | String | Yes | `RECORD_PAGE`, `APP_PAGE`, or `HOME_PAGE` |
29
+ | pageContext | JSON | Conditional | Required for RECORD_PAGE: `{"entityName": "ObjectApiName"}` |
30
+ | searchQuery | String | No | Natural language search from user intent |
31
+
32
+ **Output:**
33
+ ```json
34
+ {
35
+ "componentDefinitions": [
36
+ {
37
+ "definition": "lst/dynamicRelatedList",
38
+ "label": "Dynamic Related List",
39
+ "description": "Shows related records...",
40
+ "attributes": [{"name": "parentFieldApiName", "description": "..."}]
41
+ }
42
+ ]
43
+ }
44
+ ```
45
+
46
+ **Notes:**
47
+ - Output uses forward-slash delimiter (`namespace/blockName`), but XML uses colon (`namespace:blockName`)
48
+ - Only returns components compatible with the page type and accessible in the org
49
+ - May return empty list if no match — proceed to Tier 3
50
+
51
+ **When multiple components are returned:**
52
+ 1. **Best-match selection:** If one component clearly matches user intent (label/description aligns with the request), auto-select it
53
+ 2. **Ambiguous results:** If multiple components could satisfy the request, present the top candidates to the user with their labels and descriptions, and ask which one to use
54
+ 3. **Refinement:** If results are too broad, refine the `searchQuery` parameter with more specific keywords from user intent and retry once before prompting the user
55
+
56
+ ## getUiComponentSchemas
57
+
58
+ Retrieves the full property schema for one or more components.
59
+
60
+ **When to call:** Tier 2 (org-discovered) components only — skip for Tier 1 (local) and Tier 3 (generated) components; read @api properties from source instead.
61
+
62
+ **Input:**
63
+ ```json
64
+ execute_metadata_action({
65
+ "actionName": "GET_UI_COMPONENT_SCHEMAS",
66
+ "metadataType": "FLEXI_PAGE",
67
+ "parameters": {
68
+ "pageType": "RECORD_PAGE",
69
+ "pageContext": { "entityName": "Account" },
70
+ "componentDefinitions": ["lst/dynamicRelatedList", "flexipage/richText"],
71
+ "includeKnowledge": true
72
+ }
73
+ })
74
+ ```
75
+
76
+ **Parameters:**
77
+
78
+ | Param | Type | Required | Description |
79
+ |-------|------|----------|-------------|
80
+ | pageType | String | Yes | `RECORD_PAGE`, `APP_PAGE`, or `HOME_PAGE` |
81
+ | pageContext | JSON | Conditional | Required for RECORD_PAGE |
82
+ | componentDefinitions | List | Yes | Component FQNs (forward-slash format) |
83
+ | includeKnowledge | Boolean | No | Include component guidance text (default: true) |
84
+
85
+ **Output:**
86
+ ```json
87
+ {
88
+ "componentSchemas": [
89
+ {
90
+ "definition": "lst/dynamicRelatedList",
91
+ "success": true,
92
+ "schema": "{...JSON Schema string...}",
93
+ "knowledge": "Optional guidance text for this component"
94
+ }
95
+ ]
96
+ }
97
+ ```
98
+
99
+ **Notes:**
100
+ - Supports **partial failures** — each component has its own `success` boolean
101
+ - On failure: `{"definition": "...", "success": false, "error": "reason"}`
102
+ - When a component schema fails, fall through to Step 3 (smart defaults + LLM inference)
103
+ - `knowledge` provides platform-curated guidance — use it alongside instructions files
104
+ - Component definition format: always `namespace/blockName` (forward-slash)
@@ -0,0 +1,119 @@
1
+ # record_flexipage:dynamicHighlights — Dynamic Highlights Panel
2
+
3
+ ## Purpose
4
+
5
+ Displays the record highlights panel at the top of a record page with a primary identifying field, secondary summary fields, and configurable actions. Replaces the older static `force:highlightsPanel`.
6
+
7
+ ## Supported Page Types
8
+
9
+ - RecordPage only (always in `header` region)
10
+
11
+ ## Property Table
12
+
13
+ | Property | Type | Required | Default | Description |
14
+ |----------|------|----------|---------|-------------|
15
+ | primaryField | String (Facet ref) | Yes | — | Reference to a Facet containing the primary field (typically Record.Name) |
16
+ | secondaryFields | String (Facet ref) | No | — | Reference to a Facet containing secondary highlight fields |
17
+ | actionNames | valueList | No | — | Actions in the highlights panel: `Edit`, `Delete`, `ChangeOwnerOne`, `Share`, `RecordShareHierarchy` |
18
+ | numVisibleActions | Integer | No | 3 | Number of actions shown before overflow menu |
19
+
20
+ ## Structural Pattern
21
+
22
+ This component uses an **indirect Facet reference** pattern. The `primaryField` and `secondaryFields` properties point to Facet regions that contain `fieldInstance` elements — they are NOT direct field API names.
23
+
24
+ **Required supporting structure:**
25
+ 1. A Facet region for `primaryField` containing one `fieldInstance` (the identifying field)
26
+ 2. A Facet region for `secondaryFields` containing multiple `fieldInstance` elements (summary fields)
27
+
28
+ ## Property Inference Rules
29
+
30
+ | User Intent | Inferred Properties |
31
+ |-------------|-------------------|
32
+ | "highlights with {fields}" | Create secondaryFields facet with those fields as fieldInstances |
33
+ | "show actions: Edit, Delete" | `actionNames` = valueList with `Edit`, `Delete` |
34
+ | "show {N} actions" | `numVisibleActions` = `{N}` |
35
+
36
+ **Field selection:** Primary = `Record.Name` (or object's identifying field). Secondary = 4-6 useful fields (max 12). Prefer CLI `--secondary-fields` values if available.
37
+
38
+ ## XML Example
39
+
40
+ ```xml
41
+ <!-- Component in header region -->
42
+ <flexiPageRegions>
43
+ <itemInstances>
44
+ <componentInstance>
45
+ <componentInstanceProperties>
46
+ <name>actionNames</name>
47
+ <valueList>
48
+ <valueListItems>
49
+ <value>Edit</value>
50
+ </valueListItems>
51
+ <valueListItems>
52
+ <value>Delete</value>
53
+ </valueListItems>
54
+ <valueListItems>
55
+ <value>ChangeOwnerOne</value>
56
+ </valueListItems>
57
+ </valueList>
58
+ </componentInstanceProperties>
59
+ <componentInstanceProperties>
60
+ <name>numVisibleActions</name>
61
+ <value>3</value>
62
+ </componentInstanceProperties>
63
+ <componentInstanceProperties>
64
+ <name>primaryField</name>
65
+ <value>Facet-primary-field-001</value>
66
+ </componentInstanceProperties>
67
+ <componentInstanceProperties>
68
+ <name>secondaryFields</name>
69
+ <value>Facet-secondary-fields-001</value>
70
+ </componentInstanceProperties>
71
+ <componentName>record_flexipage:dynamicHighlights</componentName>
72
+ <identifier>record_flexipage_dynamicHighlights</identifier>
73
+ </componentInstance>
74
+ </itemInstances>
75
+ <name>header</name>
76
+ <type>Region</type>
77
+ </flexiPageRegions>
78
+
79
+ <!-- Primary field Facet -->
80
+ <flexiPageRegions>
81
+ <itemInstances>
82
+ <fieldInstance>
83
+ <fieldInstanceProperties>
84
+ <name>uiBehavior</name>
85
+ <value>none</value>
86
+ </fieldInstanceProperties>
87
+ <fieldItem>Record.Name</fieldItem>
88
+ <identifier>RecordNameField</identifier>
89
+ </fieldInstance>
90
+ </itemInstances>
91
+ <name>Facet-primary-field-001</name>
92
+ <type>Facet</type>
93
+ </flexiPageRegions>
94
+
95
+ <!-- Secondary fields Facet (same structure as primary, multiple fieldInstances) -->
96
+ <flexiPageRegions>
97
+ <itemInstances>
98
+ <fieldInstance>
99
+ <fieldInstanceProperties>
100
+ <name>uiBehavior</name>
101
+ <value>none</value>
102
+ </fieldInstanceProperties>
103
+ <fieldItem>Record.Phone</fieldItem>
104
+ <identifier>RecordPhoneField</identifier>
105
+ </fieldInstance>
106
+ </itemInstances>
107
+ <name>Facet-secondary-fields-001</name>
108
+ <type>Facet</type>
109
+ </flexiPageRegions>
110
+ ```
111
+
112
+ ## Edge Cases
113
+
114
+ - Only ONE per page — never multiple instances
115
+ - Always in `header` region — never in `main` or sidebar
116
+ - Facet names must be unique UUIDs or descriptive names
117
+ - Primary field `uiBehavior` is `none`; secondary fields also use `none`
118
+ - If CLI already generated highlights, modify existing — do not add a duplicate
119
+ - Identifier is always `record_flexipage_dynamicHighlights` (singular, never numbered)