@salesforce/afv-skills 1.29.0 → 1.31.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.
- package/README.md +2 -0
- package/package.json +1 -1
- package/skills/agentforce-architecture-analyze/README.md +2 -8
- package/skills/agentforce-architecture-analyze/SKILL.md +2 -2
- package/skills/agentforce-architecture-analyze/references/contract.json +4 -4
- package/skills/agentforce-architecture-analyze/references/soql_fields.md +1 -1
- package/skills/data360-activate/README.md +0 -1
- package/skills/data360-activate/SKILL.md +0 -2
- package/skills/data360-code-extension-generate/SKILL.md +15 -2
- package/skills/data360-connect/README.md +0 -2
- package/skills/data360-connect/SKILL.md +0 -2
- package/skills/data360-harmonize/SKILL.md +0 -1
- package/skills/data360-orchestrate/README.md +0 -7
- package/skills/data360-orchestrate/SKILL.md +0 -2
- package/skills/data360-prepare/README.md +0 -1
- package/skills/data360-prepare/SKILL.md +0 -1
- package/skills/data360-query/README.md +0 -1
- package/skills/data360-query/SKILL.md +0 -1
- package/skills/data360-segment/README.md +0 -1
- package/skills/data360-segment/SKILL.md +0 -2
- package/skills/dx-pkg-post-install-configure/SKILL.md +184 -0
- package/skills/experience-cms-brand-apply/SKILL.md +47 -16
- package/skills/experience-lwc-generate/README.md +3 -2
- package/skills/experience-lwc-generate/references/async-notification-patterns.md +1 -1
- package/skills/experience-lwc-generate/references/component-patterns.md +3 -3
- package/skills/experience-lwc-generate/references/flow-integration-guide.md +1 -1
- package/skills/experience-lwc-generate/references/lwc-best-practices.md +4 -4
- package/skills/experience-lwc-generate/references/scoring-and-testing.md +1 -1
- package/skills/experience-lwc-generate/references/state-management.md +2 -2
- package/skills/experience-lwc-generate/references/triangle-pattern.md +3 -3
- package/skills/experience-lwc-generate/scripts/post-tool-validate.py +2 -2
- package/skills/experience-lwc-generate/scripts/template_validator.py +1 -1
- package/skills/experience-ui-bundle-app-coordinate/SKILL.md +198 -34
- package/skills/experience-ui-bundle-app-coordinate/scripts/check-hosting-target.sh +26 -0
- package/skills/experience-ui-bundle-app-coordinate/scripts/check-sfdx-project.sh +15 -0
- package/skills/experience-ui-bundle-metadata-generate/SKILL.md +19 -8
- package/skills/experience-ui-bundle-metadata-generate/references/csp-metadata-format.md +2 -2
- package/skills/experience-ui-bundle-metadata-generate/scripts/check-api-version.sh +30 -0
- package/skills/external-diagram-mermaid-generate/README.md +2 -2
- package/skills/external-diagram-mermaid-generate/SKILL.md +1 -3
- package/skills/external-diagram-mermaid-generate/assets/agentforce/agent-flow.md +4 -4
- package/skills/external-diagram-mermaid-generate/assets/architecture/system-landscape.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/datamodel/b2b-commerce-erd.md +3 -3
- package/skills/external-diagram-mermaid-generate/assets/datamodel/campaigns-erd.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/datamodel/consent-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/files-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/forecasting-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/fsl-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/party-model-erd.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/datamodel/quote-order-erd.md +3 -3
- package/skills/external-diagram-mermaid-generate/assets/datamodel/revenue-cloud-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/sales-cloud-erd.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/datamodel/salesforce-erd.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/datamodel/scheduler-erd.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/datamodel/service-cloud-erd.md +3 -3
- package/skills/external-diagram-mermaid-generate/assets/datamodel/territory-management-erd.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/integration/api-sequence.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code-pkce.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/oauth/authorization-code.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/oauth/client-credentials.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/oauth/device-authorization.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/oauth/jwt-bearer.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/oauth/refresh-token.md +1 -1
- package/skills/external-diagram-mermaid-generate/assets/oauth/user-agent-social-sign-on.md +2 -2
- package/skills/external-diagram-mermaid-generate/assets/role-hierarchy/user-hierarchy.md +1 -1
- package/skills/external-diagram-mermaid-generate/references/color-palette.md +13 -13
- package/skills/external-diagram-mermaid-generate/references/diagram-conventions.md +5 -5
- package/skills/external-diagram-mermaid-generate/references/erd-conventions.md +1 -1
- package/skills/external-diagram-mermaid-generate/references/mermaid-styling.md +2 -2
- package/skills/external-diagram-mermaid-generate/references/preview-guide.md +1 -1
- package/skills/external-diagram-mermaid-generate/references/usage-examples.md +9 -9
- package/skills/external-diagram-mermaid-generate/scripts/README.md +1 -1
- package/skills/integration-connectivity-connected-app-configure/README.md +4 -5
- package/skills/integration-connectivity-connected-app-configure/SKILL.md +2 -2
- package/skills/integration-connectivity-connected-app-configure/references/example-usage.md +7 -7
- package/skills/integration-connectivity-connected-app-configure/references/migration-guide.md +1 -1
- package/skills/integration-connectivity-connected-app-configure/references/oauth-flows-reference.md +1 -1
- package/skills/integration-connectivity-connected-app-configure/references/testing-validation-guide.md +3 -3
- package/skills/integration-connectivity-generate/README.md +1 -1
- package/skills/integration-connectivity-generate/SKILL.md +6 -0
- package/skills/integration-connectivity-generate/assets/callouts/rest-queueable-callout.cls +1 -1
- package/skills/integration-connectivity-generate/assets/external-services/external-service-operations.md +1 -1
- package/skills/integration-connectivity-generate/assets/soap/wsdl2apex-guide.md +1 -1
- package/skills/integration-connectivity-generate/references/callout-patterns.md +4 -0
- package/skills/integration-connectivity-generate/references/cdc-guide.md +2 -2
- package/skills/integration-connectivity-generate/references/event-driven-architecture-guide.md +5 -5
- package/skills/integration-connectivity-generate/references/event-patterns.md +3 -2
- package/skills/integration-connectivity-generate/references/external-services-guide.md +4 -1
- package/skills/integration-connectivity-generate/references/messaging-api-v2.md +2 -2
- package/skills/integration-connectivity-generate/references/named-credentials-automation.md +1 -1
- package/skills/integration-connectivity-generate/references/named-credentials-guide.md +12 -2
- package/skills/integration-connectivity-generate/references/platform-events-guide.md +3 -3
- package/skills/integration-connectivity-generate/references/rest-callout-patterns.md +1 -1
- package/skills/integration-connectivity-generate/references/scoring-rubric.md +1 -1
- package/skills/integration-connectivity-generate/references/security-best-practices.md +5 -2
- package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +16 -5
- package/skills/integration-connectivity-generate/scripts/set-api-credential.sh +11 -2
- package/skills/integration-connectivity-generate/scripts/suggest_credential_setup.py +4 -3
- package/skills/integration-connectivity-generate/scripts/validate_integration.py +1 -1
- package/skills/omnistudio-callable-apex-generate/README.md +1 -5
- package/skills/omnistudio-callable-apex-generate/SKILL.md +14 -4
- package/skills/omnistudio-callable-apex-generate/assets/pattern_callable_vanilla.cls +8 -1
- package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +1 -1
- package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +1 -1
- package/skills/omnistudio-datamapper-generate/SKILL.md +1 -1
- package/skills/omnistudio-datamapper-generate/assets/completion-summary-template.md +2 -2
- package/skills/omnistudio-datamapper-generate/references/best-practices.md +9 -9
- package/skills/omnistudio-datamapper-generate/references/naming-conventions.md +6 -6
- package/skills/omnistudio-datapacks-deploy/README.md +1 -1
- package/skills/omnistudio-datapacks-deploy/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +1 -1
- package/skills/omnistudio-dependencies-analyze/SKILL.md +12 -5
- package/skills/omnistudio-dependencies-analyze/references/dependency-patterns.md +9 -9
- package/skills/omnistudio-dependencies-analyze/references/namespace-guide.md +1 -1
- package/skills/omnistudio-epc-catalog-generate/README.md +1 -1
- package/skills/omnistudio-flexcard-generate/SKILL.md +11 -4
- package/skills/omnistudio-flexcard-generate/references/best-practices.md +6 -6
- package/skills/omnistudio-flexcard-generate/references/data-binding-guide.md +9 -9
- package/skills/omnistudio-integration-procedure-generate/SKILL.md +9 -1
- package/skills/omnistudio-integration-procedure-generate/references/element-types.md +3 -3
- package/skills/omnistudio-omniscript-generate/SKILL.md +2 -2
- package/skills/omnistudio-omniscript-generate/references/best-practices.md +1 -1
- package/skills/omnistudio-omniscript-generate/scripts/check-duplicate-omniscript.sh +8 -0
- package/skills/omnistudio-omniscript-generate/scripts/deploy-omniscript.sh +8 -0
- package/skills/platform-apex-logs-debug/README.md +2 -2
- package/skills/platform-apex-logs-debug/references/cli-commands.md +2 -2
- package/skills/platform-apex-logs-debug/references/debug-log-reference.md +16 -16
- package/skills/platform-apex-logs-debug/references/log-analysis-tools.md +2 -2
- package/skills/platform-apex-test-run/README.md +1 -1
- package/skills/platform-apex-test-run/references/test-fix-loop.md +2 -2
- package/skills/platform-apex-test-run/references/testing-best-practices.md +3 -3
- package/skills/platform-custom-field-generate/SKILL.md +12 -11
- package/skills/platform-custom-field-generate/references/advanced-picklists.md +17 -17
- package/skills/platform-custom-report-type-generate/SKILL.md +259 -0
- package/skills/platform-custom-report-type-generate/examples/AccountProjectsWithTasks.reportType-meta.xml +51 -0
- package/skills/platform-custom-report-type-generate/examples/AccountsWithIndustry.reportType-meta.xml +27 -0
- package/skills/platform-custom-report-type-generate/examples/AccountsWithProjects.reportType-meta.xml +44 -0
- package/skills/platform-custom-report-type-generate/references/category-values.md +32 -0
- package/skills/platform-custom-report-type-generate/references/errors-and-troubleshooting.md +24 -0
- package/skills/platform-data-manage/README.md +4 -4
- package/skills/platform-data-manage/references/bulk-testing-example.md +1 -1
- package/skills/platform-data-manage/references/crud-workflow-example.md +2 -2
- package/skills/platform-data-manage/references/orchestration.md +6 -6
- package/skills/platform-dataspace-access-configure/SKILL.md +318 -0
- package/skills/platform-docs-get/SKILL.md +4 -0
- package/skills/platform-docs-get/scripts/extract_salesforce_doc.py +78 -13
- package/skills/platform-encryption-configure/SKILL.md +122 -0
- package/skills/platform-encryption-configure/assets/EncryptionKey.settings-meta.xml +17 -0
- package/skills/platform-encryption-configure/assets/PlatformEncryption.settings-meta.xml +15 -0
- package/skills/platform-encryption-configure/assets/encrypted-field.field-meta.xml +22 -0
- package/skills/platform-encryption-configure/examples/cache-only-keys.settings-meta.xml +11 -0
- package/skills/platform-encryption-configure/references/encryption-schemes.md +34 -0
- package/skills/platform-encryption-configure/references/key-models.md +34 -0
- package/skills/platform-encryption-configure/references/tenant-secret-lifecycle.md +23 -0
- package/skills/platform-encryption-configure/scripts/validate-encryption-metadata.sh +54 -0
- package/skills/platform-flexipage-generate/SKILL.md +281 -346
- package/skills/platform-flexipage-generate/references/cli_commands.md +39 -0
- package/skills/platform-flexipage-generate/references/flexipage_fieldSection.md +162 -0
- package/skills/platform-flexipage-generate/references/flexipage_richText.md +84 -0
- package/skills/platform-flexipage-generate/references/identifiers_and_regions.md +167 -0
- package/skills/platform-flexipage-generate/references/mcp_action_examples.md +104 -0
- package/skills/platform-flexipage-generate/references/record_flexipage_dynamicHighlights.md +119 -0
- package/skills/platform-flexipage-generate/references/xml_rules.md +335 -0
- package/skills/platform-flexipage-generate/scripts/resolve-component-instructions.sh +42 -0
- package/skills/platform-flexipage-generate/scripts/scan-lwc-components.sh +113 -0
- package/skills/platform-metadata-api-context-get/SKILL.md +13 -10
- package/skills/platform-metadata-deploy/README.md +2 -2
- package/skills/platform-metadata-deploy/references/agent-deployment-guide.md +2 -2
- package/skills/platform-metadata-deploy/references/deployment-workflows.md +16 -16
- package/skills/platform-metadata-deploy/references/orchestration.md +3 -3
- package/skills/platform-metadata-deploy/references/trigger-deployment-safety.md +2 -2
- package/skills/platform-models-api-configure/SKILL.md +140 -0
- package/skills/platform-models-api-configure/scripts/get-orgjwt.sh +48 -0
- package/skills/platform-policy-rule-generate/SKILL.md +260 -0
- package/skills/platform-policy-rule-generate/references/deploy-errors.md +54 -0
- package/skills/platform-policy-rule-generate/references/fixtures-index.md +29 -0
- package/skills/platform-policy-rule-generate/references/policy-schema-full.md +250 -0
- package/skills/platform-policy-rule-generate/references/templates-access.md +132 -0
- package/skills/platform-policy-rule-generate/references/templates-advanced.md +58 -0
- package/skills/platform-policy-rule-generate/references/templates-record.md +75 -0
- package/skills/platform-policy-rule-generate/references/templates-transform.md +70 -0
- package/skills/platform-policy-rule-generate/references/templates.md +10 -0
- package/skills/platform-policy-rule-generate/references/ui-compatibility.md +142 -0
- package/skills/platform-soql-query/README.md +1 -1
- package/skills/platform-soql-query/SKILL.md +1 -1
- package/skills/platform-soql-query/references/anti-patterns.md +1 -1
- package/skills/platform-soql-query/references/field-coverage-rules.md +1 -1
- package/skills/platform-soql-query/references/query-optimization.md +1 -1
- package/skills/platform-soql-query/scripts/post-tool-validate.py +3 -3
- package/skills/data360-activate/CREDITS.md +0 -5
- package/skills/data360-connect/CREDITS.md +0 -5
- package/skills/data360-harmonize/CREDITS.md +0 -3
- package/skills/data360-orchestrate/CREDITS.md +0 -15
- package/skills/data360-orchestrate/UPSTREAM.md +0 -45
- package/skills/data360-prepare/CREDITS.md +0 -7
- package/skills/data360-query/CREDITS.md +0 -7
- package/skills/data360-segment/CREDITS.md +0 -3
- package/skills/experience-lwc-generate/CREDITS.md +0 -5
- package/skills/external-diagram-mermaid-generate/CREDITS.md +0 -46
- package/skills/external-diagram-visual-generate/CREDITS.md +0 -80
- package/skills/external-diagram-visual-generate/README.md +0 -83
- package/skills/external-diagram-visual-generate/SKILL.md +0 -207
- package/skills/external-diagram-visual-generate/assets/architecture/integration-flow.md +0 -55
- package/skills/external-diagram-visual-generate/assets/erd/core-objects.md +0 -131
- package/skills/external-diagram-visual-generate/assets/erd/custom-objects.md +0 -60
- package/skills/external-diagram-visual-generate/assets/lwc/dashboard-card.md +0 -45
- package/skills/external-diagram-visual-generate/assets/lwc/data-table.md +0 -57
- package/skills/external-diagram-visual-generate/assets/lwc/record-form.md +0 -60
- package/skills/external-diagram-visual-generate/assets/review/apex-review.md +0 -57
- package/skills/external-diagram-visual-generate/assets/review/lwc-review.md +0 -48
- package/skills/external-diagram-visual-generate/references/architect-aesthetic-guide.md +0 -257
- package/skills/external-diagram-visual-generate/references/examples-index.md +0 -35
- package/skills/external-diagram-visual-generate/references/gemini-cli-setup.md +0 -65
- package/skills/external-diagram-visual-generate/references/interview-questions.md +0 -529
- package/skills/external-diagram-visual-generate/references/iteration-workflow.md +0 -173
- package/skills/external-diagram-visual-generate/scripts/check-prerequisites.sh +0 -101
- package/skills/external-diagram-visual-generate/scripts/generate_image.py +0 -243
- package/skills/integration-connectivity-connected-app-configure/CREDITS.md +0 -3
- package/skills/integration-connectivity-generate/CREDITS.md +0 -5
- package/skills/omnistudio-callable-apex-generate/CREDITS.md +0 -9
- package/skills/omnistudio-datamapper-generate/CREDITS.md +0 -5
- package/skills/omnistudio-datapacks-deploy/CREDITS.md +0 -5
- package/skills/omnistudio-dependencies-analyze/CREDITS.md +0 -5
- package/skills/omnistudio-epc-catalog-generate/CREDITS.md +0 -14
- package/skills/omnistudio-flexcard-generate/CREDITS.md +0 -5
- package/skills/omnistudio-integration-procedure-generate/CREDITS.md +0 -5
- package/skills/omnistudio-omniscript-generate/CREDITS.md +0 -5
- package/skills/platform-apex-generate/CREDITS.md +0 -5
- package/skills/platform-apex-logs-debug/CREDITS.md +0 -22
- package/skills/platform-apex-test-generate/CREDITS.md +0 -5
- package/skills/platform-apex-test-run/CREDITS.md +0 -22
- package/skills/platform-data-manage/CREDITS.md +0 -5
- package/skills/platform-metadata-deploy/CREDITS.md +0 -25
- package/skills/platform-soql-query/CREDITS.md +0 -21
- /package/skills/omnistudio-callable-apex-generate/examples/Test_VlocityOpenInterfaceConversion/{MyCustomVlocityOpenInterface2.cls → MyCustomClass.cls} +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
Use for displaying summary information about a single record. Group related fields into logical sections.
|
|
10
10
|
|
|
11
|
-
```
|
|
11
|
+
```text
|
|
12
12
|
┌──────────────────────────────────┐
|
|
13
13
|
│ Header: Record Name │
|
|
14
14
|
├──────────────────────────────────┤
|
|
@@ -37,7 +37,7 @@ Use for displaying summary information about a single record. Group related fiel
|
|
|
37
37
|
|
|
38
38
|
Use for displaying a collection of related records. Each card in the list renders from one item in the data source array.
|
|
39
39
|
|
|
40
|
-
```
|
|
40
|
+
```text
|
|
41
41
|
┌──────────────────────────────────┐
|
|
42
42
|
│ Card 1: Record A │
|
|
43
43
|
│ Field 1 | Field 2 | [Action] │
|
|
@@ -62,7 +62,7 @@ Use for displaying a collection of related records. Each card in the list render
|
|
|
62
62
|
|
|
63
63
|
Use when a single record has multiple contexts worth displaying. Each tab represents a different state with its own data source or field set.
|
|
64
64
|
|
|
65
|
-
```
|
|
65
|
+
```text
|
|
66
66
|
┌──────────────────────────────────┐
|
|
67
67
|
│ [Tab 1: Overview] [Tab 2: History] [Tab 3: Related] │
|
|
68
68
|
├──────────────────────────────────┤
|
|
@@ -83,7 +83,7 @@ Use when a single record has multiple contexts worth displaying. Each tab repres
|
|
|
83
83
|
|
|
84
84
|
Use for progressive disclosure: show a summary, then expand for details on demand.
|
|
85
85
|
|
|
86
|
-
```
|
|
86
|
+
```text
|
|
87
87
|
┌──────────────────────────────────┐
|
|
88
88
|
│ Summary: Key Fields [▼ More] │
|
|
89
89
|
└──────────────────────────────────┘
|
|
@@ -173,7 +173,7 @@ Use for progressive disclosure: show a summary, then expand for details on deman
|
|
|
173
173
|
|
|
174
174
|
### Color Usage
|
|
175
175
|
|
|
176
|
-
```
|
|
176
|
+
```yaml
|
|
177
177
|
Correct: Use SLDS token → var(--slds-g-color-brand-base-50)
|
|
178
178
|
Wrong: Hardcoded hex → #0176d3
|
|
179
179
|
Wrong: Hardcoded rgb → rgb(1, 118, 211)
|
|
@@ -272,7 +272,7 @@ Wrong: Hardcoded rgb → rgb(1, 118, 211)
|
|
|
272
272
|
|
|
273
273
|
### Data Flow Pattern
|
|
274
274
|
|
|
275
|
-
```
|
|
275
|
+
```text
|
|
276
276
|
Parent FlexCard
|
|
277
277
|
├── Data Source: IP_GetAccountSummary
|
|
278
278
|
│ └── Passes {AccountId} to child
|
|
@@ -34,7 +34,7 @@ The most common FlexCard data source is an Integration Procedure. The data sourc
|
|
|
34
34
|
|
|
35
35
|
The `ipMethod` value combines the IP's Type and SubType fields:
|
|
36
36
|
|
|
37
|
-
```
|
|
37
|
+
```text
|
|
38
38
|
IP Type: "Account"
|
|
39
39
|
IP SubType: "GetSummary"
|
|
40
40
|
ipMethod: "Account_GetSummary"
|
|
@@ -72,7 +72,7 @@ Input parameters pass context from the FlexCard's hosting environment into the I
|
|
|
72
72
|
|
|
73
73
|
Map IP response fields to FlexCard display elements using curly-brace merge syntax:
|
|
74
74
|
|
|
75
|
-
```
|
|
75
|
+
```text
|
|
76
76
|
IP Response JSON: FlexCard Merge Field:
|
|
77
77
|
───────────────── ─────────────────────
|
|
78
78
|
{ "Name": "Acme Corp" } → {Name}
|
|
@@ -84,7 +84,7 @@ IP Response JSON: FlexCard Merge Field:
|
|
|
84
84
|
|
|
85
85
|
Access nested objects in the IP response using dot notation:
|
|
86
86
|
|
|
87
|
-
```
|
|
87
|
+
```text
|
|
88
88
|
IP Response JSON: FlexCard Merge Field:
|
|
89
89
|
───────────────── ─────────────────────
|
|
90
90
|
{ → {Account.Name}
|
|
@@ -113,7 +113,7 @@ For card list layouts, set `resultListPath` to the array node. Each card in the
|
|
|
113
113
|
}
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
```
|
|
116
|
+
```text
|
|
117
117
|
IP Response: Each Card Renders:
|
|
118
118
|
──────────── ──────────────────
|
|
119
119
|
{ Card 1: {Name} → "Alice"
|
|
@@ -145,7 +145,7 @@ Apply formatting to merge fields for display:
|
|
|
145
145
|
|
|
146
146
|
Show or hide individual fields based on a data value:
|
|
147
147
|
|
|
148
|
-
```
|
|
148
|
+
```yaml
|
|
149
149
|
Condition: {Status} == "Active"
|
|
150
150
|
Action: Show the "Renewal Date" field
|
|
151
151
|
|
|
@@ -183,7 +183,7 @@ FlexCards support multiple states. Each state can have visibility conditions:
|
|
|
183
183
|
|
|
184
184
|
Apply different styles based on data values:
|
|
185
185
|
|
|
186
|
-
```
|
|
186
|
+
```text
|
|
187
187
|
If {Status} == "Active" → Green badge (slds-badge slds-theme_success)
|
|
188
188
|
If {Status} == "Expired" → Red badge (slds-badge slds-theme_error)
|
|
189
189
|
If {Status} == "Pending" → Yellow badge (slds-badge slds-theme_warning)
|
|
@@ -203,7 +203,7 @@ Use SLDS theme classes rather than inline color styles to maintain dark mode com
|
|
|
203
203
|
|
|
204
204
|
### Configuration Pattern
|
|
205
205
|
|
|
206
|
-
```
|
|
206
|
+
```yaml
|
|
207
207
|
FlexCard: AccountOverview
|
|
208
208
|
├── Data Source 1: "Account_GetSummary"
|
|
209
209
|
│ Input: { "recordId": "{recordId}" }
|
|
@@ -222,7 +222,7 @@ FlexCard: AccountOverview
|
|
|
222
222
|
|
|
223
223
|
When a card has multiple data sources, reference fields using the data source name prefix:
|
|
224
224
|
|
|
225
|
-
```
|
|
225
|
+
```text
|
|
226
226
|
Single data source: {Name}
|
|
227
227
|
Multiple data sources: {ds1.Name} or {accountSummary.Name}
|
|
228
228
|
```
|
|
@@ -261,7 +261,7 @@ Multiple data sources: {ds1.Name} or {accountSummary.Name}
|
|
|
261
261
|
|
|
262
262
|
Configure an explicit error state rather than letting the card fail silently:
|
|
263
263
|
|
|
264
|
-
```
|
|
264
|
+
```text
|
|
265
265
|
┌──────────────────────────────────┐
|
|
266
266
|
│ ⚠ Unable to load account data │
|
|
267
267
|
│ │
|
|
@@ -27,7 +27,7 @@ Expert OmniStudio Integration Procedure (IP) builder with deep knowledge of serv
|
|
|
27
27
|
|
|
28
28
|
## Quick Reference
|
|
29
29
|
|
|
30
|
-
**Scoring**: 110 points across 6 categories. **Thresholds**:
|
|
30
|
+
**Scoring**: 110 points across 6 categories. **Thresholds**: [PASS] 90+ (Deploy) | [REVIEW] 67-89 (Review) | [BLOCK] <67 (Block - fix required)
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
@@ -272,3 +272,11 @@ Deliverables produced by this skill:
|
|
|
272
272
|
| `references/best-practices.md` | Phase 2-5 — Design patterns: element composition, error handling, caching, parallel execution, and security guidance |
|
|
273
273
|
| `references/element-types.md` | Phase 2 — Element selection: read before configuring PropertySetConfig for any element type |
|
|
274
274
|
| `scripts/cli-commands.sh` | Phase 1 & 4 — CLI queries and deploy/retrieve commands; adapt by replacing `<Name>` and `<org>` placeholders |
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Pre-Delivery Checklist
|
|
279
|
+
|
|
280
|
+
- [ ] Data Mappers exist and are deployed before IP references them
|
|
281
|
+
- [ ] `IsIntegrationProcedure = true` set when creating via Data API
|
|
282
|
+
- [ ] IP activated before any OmniScript/FlexCard invokes it
|
|
@@ -465,12 +465,12 @@ Elements inside a Loop Block execute once per iteration. The current item is acc
|
|
|
465
465
|
### Example Pattern: Collect and Bulk Process
|
|
466
466
|
|
|
467
467
|
Instead of:
|
|
468
|
-
```
|
|
468
|
+
```text
|
|
469
469
|
Loop -> DataRaptor Load (per item) // BAD: N DML operations
|
|
470
470
|
```
|
|
471
471
|
|
|
472
472
|
Use:
|
|
473
|
-
```
|
|
473
|
+
```text
|
|
474
474
|
Loop -> Set Values (collect items into array)
|
|
475
475
|
DataRaptor Load (entire array) // GOOD: 1 DML operation
|
|
476
476
|
```
|
|
@@ -501,7 +501,7 @@ Set Values elements define key-value mappings:
|
|
|
501
501
|
|
|
502
502
|
### Example: Response Assembly
|
|
503
503
|
|
|
504
|
-
```
|
|
504
|
+
```text
|
|
505
505
|
Set Values: "BuildResponse"
|
|
506
506
|
out_success = true
|
|
507
507
|
out_accountId = %GetAccount:Id%
|
|
@@ -11,7 +11,7 @@ Expert OmniStudio OmniScript builder for declarative, step-based guided digital
|
|
|
11
11
|
|
|
12
12
|
## Quick Reference
|
|
13
13
|
|
|
14
|
-
**Scoring**: 120 points across 6 categories. **Thresholds**:
|
|
14
|
+
**Scoring**: 120 points across 6 categories. **Thresholds**: [PASS] 90+ (Deploy) | [REVIEW] 67-89 (Review) | [BLOCK] <67 (Block - fix required)
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -168,7 +168,7 @@ Run `scripts/check-duplicate-omniscript.sh <Type> <SubType> <Language> <org>` to
|
|
|
168
168
|
- **WARN**: Steps with no elements, input elements without validation, missing error handling on actions, unused data paths, deeply nested elements (>4 levels)
|
|
169
169
|
|
|
170
170
|
**Validation Report Format** (6-Category Scoring 0-120):
|
|
171
|
-
```
|
|
171
|
+
```yaml
|
|
172
172
|
Score: 102/120 ---- Very Good
|
|
173
173
|
-- Design & Structure: 22/25 (88%)
|
|
174
174
|
-- Data Integration: 18/20 (90%)
|
|
@@ -41,7 +41,7 @@ The default and most common pattern. Each Step represents a phase of the process
|
|
|
41
41
|
- The final Step should be a review/confirmation screen
|
|
42
42
|
|
|
43
43
|
**Example structure:**
|
|
44
|
-
```
|
|
44
|
+
```text
|
|
45
45
|
Step 1: "Account Selection" -> Type Ahead (account search) + DataRaptor Extract (prefill)
|
|
46
46
|
Step 2: "Service Details" -> Select, Text, Date inputs for the request
|
|
47
47
|
Step 3: "Attachments" -> File upload + Text Area for notes
|
|
@@ -8,6 +8,14 @@ SUBTYPE="${2:?}"
|
|
|
8
8
|
LANGUAGE="${3:?}"
|
|
9
9
|
ORG="${4:?}"
|
|
10
10
|
|
|
11
|
+
# Validate inputs to prevent SOQL injection
|
|
12
|
+
for var in "$TYPE" "$SUBTYPE" "$LANGUAGE"; do
|
|
13
|
+
if [[ ! "$var" =~ ^[a-zA-Z0-9_\ ]+$ ]]; then
|
|
14
|
+
echo "ERROR: Invalid input '$var'. Only alphanumeric, underscores, and spaces allowed." >&2
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
17
|
+
done
|
|
18
|
+
|
|
11
19
|
sf data query \
|
|
12
20
|
-q "SELECT Id,Name,Type,SubType,Language,IsActive,VersionNumber FROM OmniProcess WHERE Type='${TYPE}' AND SubType='${SUBTYPE}' AND Language='${LANGUAGE}' AND OmniProcessType='OmniScript' LIMIT 10" \
|
|
13
21
|
-o "${ORG}"
|
|
@@ -9,6 +9,14 @@ TYPE="${2:?}"
|
|
|
9
9
|
SUBTYPE="${3:?}"
|
|
10
10
|
ORG="${4:?}"
|
|
11
11
|
|
|
12
|
+
# Validate inputs to prevent SOQL injection
|
|
13
|
+
for var in "$TYPE" "$SUBTYPE"; do
|
|
14
|
+
if [[ ! "$var" =~ ^[a-zA-Z0-9_\ ]+$ ]]; then
|
|
15
|
+
echo "ERROR: Invalid input '$var'. Only alphanumeric, underscores, and spaces allowed." >&2
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
done
|
|
19
|
+
|
|
12
20
|
echo "Step 1: Verify prerequisites — check org auth"
|
|
13
21
|
sf org display -o "${ORG}" || { echo "ERROR: Org '${ORG}' is not authenticated. Run: sf org login web --alias ${ORG}"; exit 1; }
|
|
14
22
|
|
|
@@ -16,7 +16,7 @@ Salesforce debugging and troubleshooting skill with log analysis, governor limit
|
|
|
16
16
|
|
|
17
17
|
### 1. Invoke the skill
|
|
18
18
|
|
|
19
|
-
```
|
|
19
|
+
```text
|
|
20
20
|
Skill: platform-apex-logs-debug
|
|
21
21
|
Request: "Analyze debug logs for AccountTrigger performance issues in org dev"
|
|
22
22
|
```
|
|
@@ -58,7 +58,7 @@ sf apex tail log --target-org [alias] --color
|
|
|
58
58
|
|
|
59
59
|
| Related Skill | When to Use |
|
|
60
60
|
|---------------|-------------|
|
|
61
|
-
|
|
|
61
|
+
| platform-apex-generate | Fix identified Apex issues |
|
|
62
62
|
| platform-soql-query | Optimize slow SOQL queries |
|
|
63
63
|
| platform-apex-test-run | Re-run tests after fixes |
|
|
64
64
|
|
|
@@ -297,7 +297,7 @@ echo "Deleted $COUNT logs"
|
|
|
297
297
|
Logs over 2MB are truncated. Solutions:
|
|
298
298
|
|
|
299
299
|
1. **Reduce debug level:**
|
|
300
|
-
```
|
|
300
|
+
```text
|
|
301
301
|
ApexCode: DEBUG → INFO
|
|
302
302
|
ApexProfiling: FINEST → FINE
|
|
303
303
|
```
|
|
@@ -342,7 +342,7 @@ sf apex list log --target-org my-org --json | \
|
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
The hook will output analysis like:
|
|
345
|
-
```
|
|
345
|
+
```text
|
|
346
346
|
============================================================
|
|
347
347
|
🔍 DEBUG LOG ANALYSIS
|
|
348
348
|
============================================================
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
## Log Structure
|
|
5
5
|
|
|
6
6
|
Debug logs follow a consistent format:
|
|
7
|
-
```
|
|
7
|
+
```text
|
|
8
8
|
TIMESTAMP|EVENT_IDENTIFIER|[PARAMS]|DETAILS
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Example:
|
|
12
|
-
```
|
|
12
|
+
```text
|
|
13
13
|
14:32:54.123 (123456789)|SOQL_EXECUTE_BEGIN|[45]|SELECT Id FROM Account
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -34,7 +34,7 @@ Example:
|
|
|
34
34
|
| `SOQL_EXECUTE_END` | Query ends | Rows returned |
|
|
35
35
|
|
|
36
36
|
**Analysis Pattern:**
|
|
37
|
-
```
|
|
37
|
+
```text
|
|
38
38
|
|SOQL_EXECUTE_BEGIN|[45]|SELECT Id, Name FROM Account WHERE...
|
|
39
39
|
|SOQL_EXECUTE_END|[3 rows]
|
|
40
40
|
```
|
|
@@ -54,7 +54,7 @@ Example:
|
|
|
54
54
|
| `DML_END` | DML ends | Rows affected |
|
|
55
55
|
|
|
56
56
|
**Analysis Pattern:**
|
|
57
|
-
```
|
|
57
|
+
```text
|
|
58
58
|
|DML_BEGIN|[78]|Op:Insert|Type:Contact|
|
|
59
59
|
|DML_END|[200 rows]
|
|
60
60
|
```
|
|
@@ -74,7 +74,7 @@ Example:
|
|
|
74
74
|
| `CUMULATIVE_LIMIT_USAGE` | End of transaction | Summary of all limits |
|
|
75
75
|
|
|
76
76
|
**Example:**
|
|
77
|
-
```
|
|
77
|
+
```text
|
|
78
78
|
|LIMIT_USAGE|SOQL_QUERIES|25|100
|
|
79
79
|
|LIMIT_USAGE|DML_STATEMENTS|45|150
|
|
80
80
|
|LIMIT_USAGE|CPU_TIME|3500|10000
|
|
@@ -89,7 +89,7 @@ Example:
|
|
|
89
89
|
| `FATAL_ERROR` | Unhandled exception | Full stack trace |
|
|
90
90
|
|
|
91
91
|
**Analysis Pattern:**
|
|
92
|
-
```
|
|
92
|
+
```text
|
|
93
93
|
|EXCEPTION_THROWN|[67]|System.NullPointerException|Attempt to de-reference a null object
|
|
94
94
|
|FATAL_ERROR|System.NullPointerException: Attempt to de-reference a null object
|
|
95
95
|
Class.ContactService.processContacts: line 67, column 1
|
|
@@ -116,7 +116,7 @@ Example:
|
|
|
116
116
|
| `ITERATION_END` | Iteration ends | |
|
|
117
117
|
|
|
118
118
|
**Detection Pattern for SOQL in Loop:**
|
|
119
|
-
```
|
|
119
|
+
```text
|
|
120
120
|
|LOOP_BEGIN|
|
|
121
121
|
|ITERATION_BEGIN|
|
|
122
122
|
|SOQL_EXECUTE_BEGIN|[45]|SELECT...
|
|
@@ -137,7 +137,7 @@ Example:
|
|
|
137
137
|
| `CALLOUT_EXTERNAL_EXIT` | HTTP callout ends | Status code, Duration |
|
|
138
138
|
|
|
139
139
|
**Example:**
|
|
140
|
-
```
|
|
140
|
+
```text
|
|
141
141
|
|CALLOUT_EXTERNAL_ENTRY|[89]|https://api.example.com/endpoint
|
|
142
142
|
|CALLOUT_EXTERNAL_EXIT|[200]|[1500ms]
|
|
143
143
|
```
|
|
@@ -182,7 +182,7 @@ Example:
|
|
|
182
182
|
### Recommended Debug Level Settings
|
|
183
183
|
|
|
184
184
|
**For Performance Issues:**
|
|
185
|
-
```
|
|
185
|
+
```text
|
|
186
186
|
Apex Code: FINE
|
|
187
187
|
Apex Profiling: FINEST
|
|
188
188
|
Database: FINE
|
|
@@ -190,7 +190,7 @@ System: DEBUG
|
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
**For Exception Debugging:**
|
|
193
|
-
```
|
|
193
|
+
```text
|
|
194
194
|
Apex Code: DEBUG
|
|
195
195
|
Apex Profiling: FINE
|
|
196
196
|
Database: INFO
|
|
@@ -198,7 +198,7 @@ System: DEBUG
|
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
**For Callout Issues:**
|
|
201
|
-
```
|
|
201
|
+
```text
|
|
202
202
|
Apex Code: DEBUG
|
|
203
203
|
Callout: FINEST
|
|
204
204
|
System: DEBUG
|
|
@@ -243,7 +243,7 @@ System: DEBUG
|
|
|
243
243
|
|
|
244
244
|
### Pattern 1: SOQL in Loop
|
|
245
245
|
|
|
246
|
-
```
|
|
246
|
+
```text
|
|
247
247
|
|LOOP_BEGIN|
|
|
248
248
|
|ITERATION_BEGIN|
|
|
249
249
|
|SOQL_EXECUTE_BEGIN|[45]|SELECT Id FROM Contact WHERE AccountId = '001xxx'
|
|
@@ -260,7 +260,7 @@ System: DEBUG
|
|
|
260
260
|
|
|
261
261
|
### Pattern 2: DML in Loop
|
|
262
262
|
|
|
263
|
-
```
|
|
263
|
+
```text
|
|
264
264
|
|LOOP_BEGIN|
|
|
265
265
|
|ITERATION_BEGIN|
|
|
266
266
|
|DML_BEGIN|[78]|Op:Insert|Type:Contact|
|
|
@@ -273,21 +273,21 @@ System: DEBUG
|
|
|
273
273
|
|
|
274
274
|
### Pattern 3: Non-Selective Query
|
|
275
275
|
|
|
276
|
-
```
|
|
276
|
+
```text
|
|
277
277
|
|SOQL_EXECUTE_BEGIN|[23]|SELECT Id FROM Lead WHERE Status = 'Open'
|
|
278
278
|
|SOQL_EXECUTE_END|[250000 rows] ← Large result set!
|
|
279
279
|
```
|
|
280
280
|
|
|
281
281
|
### Pattern 4: CPU Limit Approaching
|
|
282
282
|
|
|
283
|
-
```
|
|
283
|
+
```text
|
|
284
284
|
|CUMULATIVE_LIMIT_USAGE|
|
|
285
285
|
|CPU_TIME|9500|10000 ← 95% used!
|
|
286
286
|
```
|
|
287
287
|
|
|
288
288
|
### Pattern 5: Null Pointer Exception
|
|
289
289
|
|
|
290
|
-
```
|
|
290
|
+
```text
|
|
291
291
|
|SOQL_EXECUTE_BEGIN|[45]|SELECT Id FROM Account WHERE Id = '001xxx'
|
|
292
292
|
|SOQL_EXECUTE_END|[0 rows] ← No results!
|
|
293
293
|
|METHOD_EXIT|getAccount|
|
|
@@ -11,7 +11,7 @@ The **Apex Log Analyzer** is a free VS Code extension that provides visual analy
|
|
|
11
11
|
|
|
12
12
|
### Installation
|
|
13
13
|
|
|
14
|
-
```
|
|
14
|
+
```text
|
|
15
15
|
1. Open VS Code
|
|
16
16
|
2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
|
|
17
17
|
3. Search "Apex Log Analyzer"
|
|
@@ -53,7 +53,7 @@ code --install-extension FinancialForce.lana
|
|
|
53
53
|
|
|
54
54
|
### Reading Flame Charts
|
|
55
55
|
|
|
56
|
-
```
|
|
56
|
+
```text
|
|
57
57
|
┌─────────────────────────────────────────────────────────────┐
|
|
58
58
|
│ FLAME CHART INTERPRETATION │
|
|
59
59
|
├─────────────────────────────────────────────────────────────┤
|
|
@@ -16,7 +16,7 @@ When the agentic loop is enabled, platform-apex-test-run will:
|
|
|
16
16
|
|
|
17
17
|
## Example Agentic Flow
|
|
18
18
|
|
|
19
|
-
```
|
|
19
|
+
```yaml
|
|
20
20
|
User: "Run tests for AccountService with auto-fix enabled"
|
|
21
21
|
|
|
22
22
|
Claude:
|
|
@@ -44,6 +44,6 @@ Claude:
|
|
|
44
44
|
|
|
45
45
|
## Auto-Fix Command
|
|
46
46
|
|
|
47
|
-
```
|
|
47
|
+
```text
|
|
48
48
|
Skill(skill="sf-apex", args="Fix failing test [TestClassName].[methodName] - Error: [error message]")
|
|
49
49
|
```
|
|
@@ -7,7 +7,7 @@ This guide covers best practices for writing effective, maintainable Apex tests
|
|
|
7
7
|
|
|
8
8
|
## The Testing Pyramid
|
|
9
9
|
|
|
10
|
-
```
|
|
10
|
+
```text
|
|
11
11
|
╱╲
|
|
12
12
|
╱ ╲
|
|
13
13
|
╱ E2E╲ Few end-to-end tests
|
|
@@ -423,7 +423,7 @@ Fast tests enable continuous integration. Slow tests become barriers to frequent
|
|
|
423
423
|
|
|
424
424
|
### Speed Strategy
|
|
425
425
|
|
|
426
|
-
```
|
|
426
|
+
```text
|
|
427
427
|
┌─────────────────────────────────────────────────────────────┐
|
|
428
428
|
│ INTEGRATION TESTS (Few) │
|
|
429
429
|
│ - Real DML, real triggers │
|
|
@@ -499,7 +499,7 @@ sf apex get test --test-run-id [id] --code-coverage --result-format json | jq '.
|
|
|
499
499
|
|
|
500
500
|
### Fast Test Checklist
|
|
501
501
|
|
|
502
|
-
```
|
|
502
|
+
```text
|
|
503
503
|
□ Is there a pure logic portion that can be unit tested?
|
|
504
504
|
□ Can database operations be mocked for edge cases?
|
|
505
505
|
□ Is @TestSetup reused across multiple test methods?
|
|
@@ -4,6 +4,7 @@ description: "Use this skill when users need to create, generate, or validate Sa
|
|
|
4
4
|
metadata:
|
|
5
5
|
version: "1.0"
|
|
6
6
|
minApiVersion: "51.0"
|
|
7
|
+
relatedSkills: ["platform-value-set-generate", "platform-validation-rule-generate"]
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# Salesforce Custom Field Generator and Validator
|
|
@@ -20,7 +21,7 @@ Every generated field must include these tags:
|
|
|
20
21
|
|
|
21
22
|
| Attribute | Requirement | Notes |
|
|
22
23
|
|-----------|-------------|-------|
|
|
23
|
-
| `<fullName>` | Required | **Field** name only: derive from `<label>` — capitalize each word, replace spaces with `_`, append `__c`. Must start with a letter. E.g., label `Total Contract Value` → `Total_Contract_Value__c`.
|
|
24
|
+
| `<fullName>` | Required | **Field** name only: derive from `<label>` — capitalize each word, replace spaces with `_`, append `__c`. Must start with a letter. E.g., label `Total Contract Value` → `Total_Contract_Value__c`. This rule is for the FIELD name. **Picklist VALUE `<fullName>` is different — keep it exactly as the user spelled it, spaces and all, no `__c`** (e.g. `Closed Won`, NOT `Closed_Won`). See [`references/advanced-picklists.md`](references/advanced-picklists.md) (ref §3). |
|
|
24
25
|
| `<label>` | Required | The UI name (Title Case) |
|
|
25
26
|
| `<description>` | Always include | Explain the business reason *why* this field exists. |
|
|
26
27
|
| `<inlineHelpText>` | Always include | Actionable end-user guidance that adds value beyond the label (e.g., "Enter the value in USD including tax", not "The amount"). |
|
|
@@ -49,7 +50,7 @@ To ensure deployment success, follow these mathematical constraints:
|
|
|
49
50
|
|
|
50
51
|
### The "Fixed 255" Rule
|
|
51
52
|
|
|
52
|
-
**TextArea:
|
|
53
|
+
**TextArea: do NOT include `<length>`** — the Metadata API fixes the length at 255 implicitly and **rejects an explicit `<length>` value** with "Can not specify 'length' for a CustomField of type TextArea". Omit `<length>` entirely; the field only needs `<fullName>`, `<label>`, and `<type>TextArea</type>`.
|
|
53
54
|
|
|
54
55
|
### Visible Lines
|
|
55
56
|
|
|
@@ -76,7 +77,7 @@ Mandatory for Long/Rich text and Multi-select picklists to control UI height.
|
|
|
76
77
|
| Phone | `Phone` | Standardizes phone number formatting |
|
|
77
78
|
| Picklist | `Picklist` | `valueSet` containing EITHER `valueSetDefinition` (inline) OR `valueSetName` (reference); `restricted` (see "Picklist `restricted` default" below; advanced cases in §3.4) |
|
|
78
79
|
| Text | `Text` | `length` (Max 255) |
|
|
79
|
-
| Text Area | `TextArea` | `<length
|
|
80
|
+
| Text Area | `TextArea` | None — do NOT include `<length>`; the API fixes length at 255 implicitly |
|
|
80
81
|
| Text (Long) | `LongTextArea` | `length`, `visibleLines` (default 3) |
|
|
81
82
|
| Text (Rich) | `Html` | `length`, `visibleLines` (default 25) |
|
|
82
83
|
| Time | `Time` | Stores time only (no date) |
|
|
@@ -112,7 +113,7 @@ Mandatory for Long/Rich text and Multi-select picklists to control UI height.
|
|
|
112
113
|
|
|
113
114
|
### 3.4 Advanced Picklists
|
|
114
115
|
|
|
115
|
-
The inline `<valueSetDefinition>` above is the simple case. Full rules and worked
|
|
116
|
+
The inline `<valueSetDefinition>` above is the simple case. Full rules and worked correct/incorrect
|
|
116
117
|
examples for everything below are in
|
|
117
118
|
[`references/advanced-picklists.md`](references/advanced-picklists.md) — load it for any
|
|
118
119
|
non-trivial picklist. Section numbers in parentheses below (e.g. "ref §1") point to that
|
|
@@ -166,12 +167,12 @@ Master-Detail fields have **strict attribute restrictions** that differ from Loo
|
|
|
166
167
|
|
|
167
168
|
| Attribute | Master-Detail | Lookup |
|
|
168
169
|
|-----------|---------------|--------|
|
|
169
|
-
| `<required>` |
|
|
170
|
-
| `<deleteConstraint>` |
|
|
171
|
-
| `<lookupFilter>` |
|
|
172
|
-
| `<relationshipOrder>` |
|
|
173
|
-
| `<reparentableMasterDetail>` |
|
|
174
|
-
| `<writeRequiresMasterRead>` |
|
|
170
|
+
| `<required>` | FORBIDDEN | Optional |
|
|
171
|
+
| `<deleteConstraint>` | FORBIDDEN (always CASCADE) | Required (`SetNull`, `Restrict`, `Cascade`) |
|
|
172
|
+
| `<lookupFilter>` | FORBIDDEN | Optional |
|
|
173
|
+
| `<relationshipOrder>` | Required (0 or 1) | Not applicable |
|
|
174
|
+
| `<reparentableMasterDetail>` | Optional | Not applicable |
|
|
175
|
+
| `<writeRequiresMasterRead>` | Optional | Not applicable |
|
|
175
176
|
|
|
176
177
|
### INCORRECT — Master-Detail with forbidden attributes:
|
|
177
178
|
|
|
@@ -451,7 +452,7 @@ Before generating CustomField XML, verify:
|
|
|
451
452
|
- [ ] Is `precision ≤ 18`?
|
|
452
453
|
|
|
453
454
|
### Text Area Checks
|
|
454
|
-
- [ ] For TextArea: Is `<length
|
|
455
|
+
- [ ] For TextArea: Is `<length>` **omitted**? (The API rejects an explicit `<length>` value on TextArea fields.)
|
|
455
456
|
- [ ] For LongTextArea/Html: Is `<visibleLines>` set?
|
|
456
457
|
|
|
457
458
|
### Relationship Limit Checks
|