@salesforce/afv-skills 1.37.0 → 1.38.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/package.json +1 -1
- package/skills/agentforce-generate/README.md +20 -3
- package/skills/agentforce-generate/SKILL.md +253 -440
- package/skills/agentforce-generate/assets/agent-spec-template.md +6 -2
- package/skills/agentforce-generate/assets/agents/order-service.agent +16 -12
- package/skills/agentforce-generate/assets/agents/production-faq.agent +4 -4
- package/skills/agentforce-generate/assets/agents/router-first.agent +5 -5
- package/skills/agentforce-generate/assets/agents/template-single-subagent.agent +4 -4
- package/skills/agentforce-generate/assets/agents/verification-gate.agent +8 -6
- package/skills/agentforce-generate/assets/agents/voice-knowledge-grounded.agent +9 -9
- package/skills/agentforce-generate/assets/agents/voice-service-agent.agent +7 -7
- package/skills/agentforce-generate/assets/patterns/README.md +3 -3
- package/skills/agentforce-generate/assets/patterns/action-callbacks.agent +5 -5
- package/skills/agentforce-generate/assets/patterns/advanced-input-bindings.agent +6 -8
- package/skills/agentforce-generate/assets/patterns/bidirectional-routing.agent +11 -13
- package/skills/agentforce-generate/assets/patterns/critical-input-collection.agent +11 -16
- package/skills/agentforce-generate/assets/patterns/lifecycle-events.agent +2 -3
- package/skills/agentforce-generate/assets/patterns/llm-controlled-actions.agent +6 -7
- package/skills/agentforce-generate/assets/patterns/open-gate-routing.agent +3 -3
- package/skills/agentforce-generate/assets/patterns/prompt-template-action.agent +14 -19
- package/skills/agentforce-generate/assets/patterns/system-instruction-overrides.agent +11 -20
- package/skills/agentforce-generate/references/actions-reference.md +2 -2
- package/skills/agentforce-generate/references/agent-audit-and-repair.md +135 -0
- package/skills/agentforce-generate/references/agent-audit-candidate-verification.md +160 -0
- package/skills/agentforce-generate/references/agent-audit-diagnostic-catalog.md +156 -0
- package/skills/agentforce-generate/references/agent-audit-diagnostics-actions-state.md +176 -0
- package/skills/agentforce-generate/references/agent-audit-diagnostics-architecture-evaluation.md +68 -0
- package/skills/agentforce-generate/references/agent-audit-diagnostics-instructions-routing.md +283 -0
- package/skills/agentforce-generate/references/agent-audit-evaluation-loop.md +191 -0
- package/skills/agentforce-generate/references/agent-audit-repair-report.md +143 -0
- package/skills/agentforce-generate/references/agent-audit-scope-path-review.md +180 -0
- package/skills/agentforce-generate/references/agent-design-and-spec-creation.md +105 -59
- package/skills/agentforce-generate/references/agent-script-core-language.md +144 -61
- package/skills/agentforce-generate/references/agent-subagent-map-diagrams.md +33 -23
- package/skills/agentforce-generate/references/agent-validation-and-debugging.md +37 -11
- package/skills/agentforce-generate/references/agentscript-toolchain.md +112 -0
- package/skills/agentforce-generate/references/architecture-patterns.md +81 -18
- package/skills/agentforce-generate/references/common-control-flow-pitfalls.md +255 -0
- package/skills/agentforce-generate/references/control-flow-actions-sequencing.md +198 -0
- package/skills/agentforce-generate/references/control-flow-lifecycle-side-effects.md +87 -0
- package/skills/agentforce-generate/references/examples.md +22 -22
- package/skills/agentforce-generate/references/instruction-resolution.md +123 -83
- package/skills/agentforce-generate/references/known-issues.md +1 -2
- package/skills/agentforce-generate/references/optimization-pattern-1-data-flow.md +4 -0
- package/skills/agentforce-generate/references/optimization-pattern-2-deterministic-logic.md +33 -0
- package/skills/agentforce-generate/references/optimization-pattern-3-reference-syntax.md +32 -3
- package/skills/agentforce-generate/references/optimization-pattern-4-escalation.md +2 -2
- package/skills/agentforce-generate/references/patterns-by-requirement.md +3 -1
- package/skills/agentforce-generate/references/posture-and-determinism.md +103 -22
- package/skills/agentforce-generate/references/reference-map.md +19 -3
- package/skills/agentforce-generate/references/scoring-rubric.md +1 -1
- package/skills/agentforce-generate/references/voice-latency-heuristics.md +4 -0
- package/skills/agentforce-generate/references/voice-modality-reference.md +4 -4
- package/skills/agentforce-generate/references/zen-of-agentscript.md +139 -23
- package/skills/agentforce-generate/scripts/agentscript-sdk-loader.mjs +133 -0
- package/skills/agentforce-generate/scripts/index-agent.mjs +141 -0
- package/skills/agentforce-generate/scripts/setup-agentscript-sdk.mjs +337 -0
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +1 -1
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +433 -0
- package/skills/automation-sandbox-post-copy-configure/assets/api_request_templates.json +89 -0
- package/skills/automation-sandbox-post-copy-configure/examples/sample_config_input.json +40 -0
- package/skills/automation-sandbox-post-copy-configure/examples/sample_execution_summary.md +79 -0
- package/skills/automation-sandbox-post-copy-configure/references/api_endpoints.md +273 -0
- package/skills/automation-sandbox-post-copy-configure/references/authentication.md +94 -0
- package/skills/automation-sandbox-post-copy-configure/references/execution_phasing.md +93 -0
- package/skills/automation-sandbox-post-copy-configure/references/rules_gotchas.md +35 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/classify-patch-result.mjs +88 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/map-metadata-key.mjs +98 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/plan-phases.mjs +98 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/resolve-target-org.mjs +56 -0
- package/skills/design-systems-slds-validate/SKILL.md +14 -13
- package/skills/dx-code-analyzer-custom-rule-create/examples/xpath-examples.md +1 -1
- package/skills/dx-code-analyzer-custom-rule-create/references/xpath-patterns-security.md +1 -1
- package/skills/dx-org-devhub-configure/SKILL.md +268 -0
- package/skills/dx-org-devhub-configure/examples/status-output.md +39 -0
- package/skills/dx-org-devhub-configure/scripts/devhub.sh +650 -0
- package/skills/dx-org-devhub-configure/scripts/test-devhub.sh +116 -0
- package/skills/dx-org-manage/SKILL.md +135 -42
- package/skills/dx-org-manage/assets/derive-alias.sh +95 -0
- package/skills/dx-org-manage/assets/scratch-def.seed.json +6 -0
- package/skills/dx-org-manage/examples/README.md +1 -1
- package/skills/dx-org-manage/examples/scratch-orgs/delete_output.json +8 -0
- package/skills/dx-org-manage/examples/scratch-orgs/display_output.json +23 -0
- package/skills/dx-org-manage/examples/scratch-orgs/list_output.json +58 -0
- package/skills/dx-org-manage/examples/scratch-orgs/resume_output.json +38 -0
- package/skills/dx-org-manage/examples/scratch-orgs/success_definition_file.json +1 -1
- package/skills/dx-org-manage/examples/scratch-orgs/success_edition.json +1 -1
- package/skills/dx-org-manage/examples/scratch-orgs/success_shape.json +41 -0
- package/skills/dx-org-manage/examples/scratch-orgs/success_snapshot.json +1 -1
- package/skills/dx-org-manage/examples/snapshots/error_output.json +3 -3
- package/skills/dx-org-manage/references/creating-scratch-org.md +2 -2
- package/skills/dx-org-manage/references/creating-snapshot.md +1 -2
- package/skills/dx-org-manage/references/definition_file_options.md +24 -0
- package/skills/dx-org-manage/references/edition_types.md +10 -8
- package/skills/dx-org-manage/references/opening-org.md +11 -12
- package/skills/dx-org-manage/references/scratch-org-create.md +303 -0
- package/skills/dx-org-manage/references/scratch-org-operations.md +135 -0
- package/skills/experience-aura-lwc-migrate/SKILL.md +120 -0
- package/skills/experience-aura-lwc-migrate/references/aura-api-expert.md +170 -0
- package/skills/experience-aura-lwc-migrate/references/aura-data-expert.md +172 -0
- package/skills/experience-aura-lwc-migrate/references/aura-migration-guidelines.md +299 -0
- package/skills/experience-aura-lwc-migrate/references/aura-prd-framework.md +79 -0
- package/skills/experience-aura-lwc-migrate/references/aura-redundant-code-expert.md +24 -0
- package/skills/experience-aura-lwc-migrate/references/aura-reference-expert.md +140 -0
- package/skills/experience-aura-lwc-migrate/references/aura-resolver-expert.md +115 -0
- package/skills/experience-aura-lwc-migrate/references/aura-slots-expert.md +67 -0
- package/skills/experience-aura-lwc-migrate/references/aura-style-expert.md +62 -0
- package/skills/experience-aura-lwc-migrate/references/aura-to-lwc-completeness-checklist.md +188 -0
- package/skills/experience-aura-lwc-migrate/references/aura-values-expert.md +67 -0
- package/skills/experience-content-media-search/SKILL.md +17 -12
- package/skills/experience-content-media-stock-image-search/SKILL.md +192 -0
- package/skills/experience-content-media-stock-image-search/scripts/download-stock-image.py +102 -0
- package/skills/experience-lds-best-practices-apply/SKILL.md +245 -0
- package/skills/experience-lds-best-practices-apply/references/adapter-apis.md +1640 -0
- package/skills/experience-lds-best-practices-apply/references/lds-data-consistency.md +126 -0
- package/skills/experience-lds-best-practices-apply/references/lds-expert.md +429 -0
- package/skills/experience-lds-best-practices-apply/references/lds-referential-integrity.md +322 -0
- package/skills/experience-lds-best-practices-apply/references/wire-adapter-types.md +1511 -0
- package/skills/experience-lds-graphql-generate/SKILL.md +222 -0
- package/skills/experience-lds-graphql-generate/references/generation-guide.md +236 -0
- package/skills/experience-lds-graphql-generate/references/generation-mutation.md +277 -0
- package/skills/experience-lds-graphql-generate/references/generation-query.md +237 -0
- package/skills/experience-lds-graphql-generate/scripts/fetch-lds-graphql-schema.sh +230 -0
- package/skills/experience-lds-graphql-generate/scripts/test-lds-graphql-query.sh +128 -0
- package/skills/experience-lwc-accessibility-validate/SKILL.md +112 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-1-1-non-text-content.md +88 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-1-i-lists.md +52 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-1-ii-tables.md +106 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-1-iii-form-labels.md +78 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-1-iv-regions.md +26 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-1-v-groups.md +66 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-3-5-identify-input.md +70 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-1-4-3-contrast.md +115 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-1-1-keyboard.md +47 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-4-4-link-purpose.md +39 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-4-6-headings-labels.md +50 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-5-1-pointer-gestures.md +54 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-5-2-pointer-cancellation.md +49 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-5-3-label-in-name.md +77 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-2-5-7-dragging-movement.md +45 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-3-2-1-on-focus.md +55 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-3-2-2-on-input.md +51 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-3-3-1-error-identification.md +84 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-3-3-2-labels-instructions.md +50 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-3-3-3-error-suggestion.md +64 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-4-1-2-i-name.md +105 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-4-1-2-ii-role.md +99 -0
- package/skills/experience-lwc-accessibility-validate/references/reviewers/sc-4-1-2-iii-value.md +97 -0
- package/skills/experience-lwc-accessibility-validate/references/vision/sc-1-1-1-non-text-content.md +83 -0
- package/skills/experience-lwc-accessibility-validate/references/vision/sc-1-4-1-use-of-color.md +62 -0
- package/skills/experience-lwc-accessibility-validate/references/vision/sc-1-4-10-resize-reflow.md +18 -0
- package/skills/experience-lwc-accessibility-validate/references/vision/sc-1-4-11-non-text-contrast.md +43 -0
- package/skills/experience-lwc-accessibility-validate/references/vision/sc-1-4-3-contrast.md +25 -0
- package/skills/experience-lwc-accessibility-validate/scripts/contrast-ratio.py +153 -0
- package/skills/experience-lwc-design-generate/SKILL.md +261 -0
- package/skills/experience-lwc-design-generate/references/figma-to-prd-blueprint.md +66 -0
- package/skills/experience-lwc-design-generate/references/prd-analysis-template.md +17 -0
- package/skills/experience-lwc-design-generate/scripts/check-component-name.sh +75 -0
- package/skills/experience-lwc-design-generate/scripts/detect-project-tools.sh +97 -0
- package/skills/experience-lwc-runtime-observe/SKILL.md +244 -0
- package/skills/experience-lwc-runtime-observe/examples/component-preview-and-dom.md +41 -0
- package/skills/experience-lwc-runtime-observe/scripts/extract-dom.sh +79 -0
- package/skills/experience-lwc-runtime-observe/scripts/open-frontdoor.sh +46 -0
- package/skills/experience-lwc-runtime-observe/scripts/verify-toolchain.sh +48 -0
- package/skills/experience-lwc-security-validate/SKILL.md +151 -0
- package/skills/experience-lwc-security-validate/examples/review-report.md +6 -0
- package/skills/experience-lwc-security-validate/examples/score-report.sarif.json +32 -0
- package/skills/experience-lwc-security-validate/references/lws-security-expert.md +986 -0
- package/skills/experience-lwc-security-validate/references/security-analysis.md +611 -0
- package/skills/experience-lwc-security-validate/scripts/check-lwc-import.sh +166 -0
- package/skills/experience-lwc-security-validate/scripts/validate-sarif.sh +131 -0
- package/skills/experience-ui-bundle-2gp-deploy/SKILL.md +454 -0
- package/skills/experience-ui-bundle-2gp-deploy/assets/CustomApplication.app-meta.xml +12 -0
- package/skills/experience-ui-bundle-2gp-deploy/assets/PermissionSet.permissionset-meta.xml +9 -0
- package/skills/experience-ui-bundle-2gp-deploy/scripts/find-bundle-package-dir.sh +53 -0
- package/skills/experience-ui-bundle-agentforce-client-generate/SKILL.md +104 -26
- package/skills/experience-ui-bundle-agentforce-client-generate/references/constraints.md +35 -24
- package/skills/experience-ui-bundle-agentforce-client-generate/references/examples.md +92 -1
- package/skills/experience-ui-bundle-agentforce-client-generate/references/style-tokens.md +2 -0
- package/skills/experience-ui-bundle-agentforce-client-generate/references/troubleshooting.md +14 -1
- package/skills/experience-ui-bundle-agentforce-client-generate/scripts/detect-framework.sh +67 -0
- package/skills/experience-ui-bundle-deploy/SKILL.md +83 -14
- package/skills/experience-ui-bundle-deploy/assets/Communities.settings-meta.xml +19 -0
- package/skills/experience-ui-bundle-deploy/assets/org-setup.config.template.json +5 -0
- package/skills/experience-ui-bundle-deploy/assets/social-login-auth-providers.apex +158 -0
- package/skills/experience-ui-bundle-deploy/references/config-scaffold.md +13 -1
- package/skills/experience-ui-bundle-deploy/references/social-login.md +179 -0
- package/skills/experience-ui-bundle-frontend-generate/SKILL.md +14 -0
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +6 -5
- package/skills/experience-ui-bundle-mfa-configure/references/social-login.md +15 -7
- package/skills/experience-ui-bundle-salesforce-data-access/SKILL.md +41 -5
- package/skills/experience-ui-bundle-salesforce-data-access/references/caching.md +10 -22
- package/skills/experience-ui-bundle-salesforce-data-access/references/graphql-hand-authoring.md +4 -19
- package/skills/experience-ui-bundle-salesforce-data-access/references/migration.md +5 -0
- package/skills/experience-ui-bundle-salesforce-data-access/references/sdk-api.md +33 -150
- package/skills/mobile-platform-native-capabilities-integrate/references/nfc.md +35 -0
- package/skills/platform-apex-generate/SKILL.md +8 -7
- package/skills/platform-apex-test-generate/SKILL.md +3 -1
- package/skills/platform-apex-test-run/SKILL.md +9 -8
- package/skills/platform-lightning-type-widget-coordinate/SKILL.md +1 -1
- package/skills/platform-lightning-type-widget-coordinate/examples/existing-lightning-type-with-widget-prompt.md +1 -1
- package/skills/platform-lightning-type-widget-coordinate/examples/new-lightning-type-with-widget-prompt.md +1 -1
- package/skills/platform-lightning-type-widget-coordinate/references/validation-gates.md +3 -3
- package/skills/platform-mcp-tool-widget-coordinate/SKILL.md +43 -67
- package/skills/platform-mcp-tool-widget-coordinate/examples/action-name-source-prompt.md +1 -2
- package/skills/platform-mcp-tool-widget-coordinate/examples/apex-invocable-source-prompt.md +2 -3
- package/skills/platform-mcp-tool-widget-coordinate/examples/nested-object-list-source-prompt.md +163 -0
- package/skills/platform-mcp-tool-widget-coordinate/examples/nested-object-single-source-prompt.md +198 -0
- package/skills/platform-mcp-tool-widget-coordinate/examples/pasted-tool-output-prompt.md +0 -1
- package/skills/platform-mcp-tool-widget-coordinate/references/build-plan-format.md +17 -11
- package/skills/platform-mcp-tool-widget-coordinate/references/mcp-tool-output-discovery.md +48 -15
- package/skills/platform-mcp-tool-widget-coordinate/references/two-clt-modeling.md +73 -10
- package/skills/platform-mcp-tool-widget-coordinate/references/validation-gates.md +48 -8
- package/skills/platform-policy-rule-generate/SKILL.md +22 -12
- package/skills/platform-policy-rule-generate/references/deploy-errors.md +1 -1
- package/skills/platform-policy-rule-generate/references/policy-schema-full.md +8 -29
- package/skills/platform-policy-rule-generate/references/templates-advanced.md +1 -1
- package/skills/platform-sharing-owd-configure/SKILL.md +20 -8
- package/skills/platform-sharing-owd-configure/references/access_levels.md +14 -1
- package/skills/platform-sharing-rules-generate/SKILL.md +67 -35
- package/skills/platform-sharing-rules-generate/examples/create-cases.md +16 -17
- package/skills/platform-sharing-rules-generate/examples/delete-cases.md +34 -79
- package/skills/platform-sharing-rules-generate/examples/edit-cases.md +13 -26
- package/skills/platform-sharing-rules-generate/scripts/count-remaining-rules.sh +33 -0
- package/skills/platform-widget-generate/SKILL.md +3 -5
- package/skills/platform-widget-generate/examples/conditional.json +18 -13
- package/skills/platform-widget-generate/examples/list-with-foreach.json +2 -2
- package/skills/platform-widget-generate/examples/single-object.json +2 -2
- package/skills/platform-widget-generate/references/schema-from-lightning-type.md +27 -6
- package/skills/platform-widget-generate/references/widget-bundle-layout.md +4 -3
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +287 -0
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/references/mcp-invocation.md +260 -0
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +252 -0
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/references/mcp-invocation.md +204 -0
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +259 -0
- package/skills/service-itsm-agentic-setup-cmdb-configure/references/mcp-invocation.md +188 -0
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +197 -0
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/examples/output-templates.md +77 -0
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +316 -0
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/references/mcp-invocation.md +221 -0
- package/skills/service-itsm-incident-priority-configure/SKILL.md +168 -0
- package/skills/service-itsm-incident-priority-configure/examples/matrix-operations.md +200 -0
- package/skills/service-itsm-incident-priority-configure/examples/render-matrix.md +54 -0
- package/skills/service-itsm-incident-priority-configure/examples/seed-full-matrix.md +52 -0
- package/skills/service-itsm-incident-priority-configure/references/sf-cli-invocation.md +264 -0
- package/skills/platform-mcp-tool-widget-coordinate/examples/nested-object-source-prompt.md +0 -191
- package/skills/platform-policy-rule-generate/references/fixtures-index.md +0 -29
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
## 🎰 Slots Expert Analysis Framework
|
|
2
|
+
|
|
3
|
+
### Analysis Focus
|
|
4
|
+
|
|
5
|
+
Analyze component composition patterns, content projection, and child component integration in the Aura component.
|
|
6
|
+
|
|
7
|
+
### Key Areas to Review
|
|
8
|
+
|
|
9
|
+
#### 1. Aura Facet Analysis
|
|
10
|
+
|
|
11
|
+
- Look for `<aura:facet>` declarations and usage
|
|
12
|
+
- Document how facets are used for content projection
|
|
13
|
+
- Identify dynamic facet content and conditional rendering
|
|
14
|
+
- Note any nested facet patterns or complex compositions
|
|
15
|
+
|
|
16
|
+
#### 2. Body Content Patterns
|
|
17
|
+
|
|
18
|
+
- Analyze `{!v.body}` usage for content projection
|
|
19
|
+
- Document how child components are composed
|
|
20
|
+
- Identify conditional rendering of body content
|
|
21
|
+
- Note any iteration patterns over child elements
|
|
22
|
+
|
|
23
|
+
#### 3. Component Composition
|
|
24
|
+
|
|
25
|
+
- Find all child components and their content patterns
|
|
26
|
+
- Document how content is passed to child components
|
|
27
|
+
- Identify any wrapper or container component patterns
|
|
28
|
+
- Note any dynamic component creation or destruction
|
|
29
|
+
|
|
30
|
+
#### 4. Content Distribution
|
|
31
|
+
|
|
32
|
+
- Analyze how different content types are distributed
|
|
33
|
+
- Document named slots vs default content patterns
|
|
34
|
+
- Identify any content transformation or filtering
|
|
35
|
+
- Note accessibility considerations for content structure
|
|
36
|
+
|
|
37
|
+
### Migration Considerations
|
|
38
|
+
|
|
39
|
+
#### Default Slot Analysis
|
|
40
|
+
|
|
41
|
+
Your task is to identify a placeholder for an anonymous block of markup that translates into a default slot in LWC.
|
|
42
|
+
Named slots or other elements and attributes are not part of this analysis and will be covered separately.
|
|
43
|
+
In Aura an anonymous block of markup is injected using the expression "{!v.body}" or "{#v.body}".
|
|
44
|
+
|
|
45
|
+
Review Aura component above and fix its blueprint using following rules:
|
|
46
|
+
|
|
47
|
+
1. Every occurance of the expression "{!v.body}" or "{#v.body}" should be present as an element in the "contentRequirements" section.
|
|
48
|
+
2. If such element has already been added, do not add another one but update one that has been added by adding "default slot" in "what" section.
|
|
49
|
+
3. LWC components can have only one default slot, so it's crucial to include conditions under which this fragment is present in "what".
|
|
50
|
+
|
|
51
|
+
- For each issue found, provide a separate, detailed report.
|
|
52
|
+
- Keep issues concise, avoid duplicated issues or unnecessary or non-applicable problems.
|
|
53
|
+
|
|
54
|
+
#### Named Slot Analysis
|
|
55
|
+
|
|
56
|
+
In Aura, placeholders for blocks of markup are added by declaring attributes with type "Aura.Component" or "Aura.Component[]" for one or more component instances.
|
|
57
|
+
Such placeholders are similar to slots in LWC web components.
|
|
58
|
+
|
|
59
|
+
Review Aura component above and fix its blueprint using following rules:
|
|
60
|
+
|
|
61
|
+
1. Every `<aura:attribute>` with type "Aura.Component" or "Aura.Component[]" should be added as an element in the "contentRequirements" section.
|
|
62
|
+
2. Only elements for `<aura:attribute>` with type "Aura.Component" or "Aura.Component[]" can be added as part of this review. Ignore all other elements.
|
|
63
|
+
3. The "name" of the included element should be set to the name of the attribute.
|
|
64
|
+
4. The "what" of the included element should be set to "named slot inside <name of other existing item inside contentRequirements or root>".
|
|
65
|
+
|
|
66
|
+
- For each issue found, provide a separate, detailed report.
|
|
67
|
+
- Keep issues concise, avoid duplicated issues or unnecessary or non-applicable problems.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
## 🎨 Style Expert Analysis Framework
|
|
2
|
+
|
|
3
|
+
### Analysis Focus
|
|
4
|
+
|
|
5
|
+
Analyze styling patterns, CSS architecture, and design token usage in the Aura component.
|
|
6
|
+
|
|
7
|
+
### Key Areas to Review
|
|
8
|
+
|
|
9
|
+
#### 1. CSS File Analysis
|
|
10
|
+
|
|
11
|
+
- Document all CSS classes and their purposes
|
|
12
|
+
- Identify SLDS (Salesforce Lightning Design System) usage patterns
|
|
13
|
+
- Note any custom CSS that may conflict with LWC styling
|
|
14
|
+
- Check for responsive design patterns and media queries
|
|
15
|
+
|
|
16
|
+
#### 2. Styling Token Usage
|
|
17
|
+
|
|
18
|
+
- Look for design token references and their usage
|
|
19
|
+
- Document theme customization patterns
|
|
20
|
+
- Identify brand-specific styling requirements
|
|
21
|
+
- Note any dynamic styling based on component state
|
|
22
|
+
|
|
23
|
+
#### 3. CSS Encapsulation Patterns
|
|
24
|
+
|
|
25
|
+
- Analyze CSS scoping and inheritance patterns
|
|
26
|
+
- Document any global CSS dependencies
|
|
27
|
+
- Identify component-specific styling isolation
|
|
28
|
+
- Note potential CSS conflicts or specificity issues
|
|
29
|
+
|
|
30
|
+
#### 4. Dynamic Styling
|
|
31
|
+
|
|
32
|
+
- Find any JavaScript-based style manipulation
|
|
33
|
+
- Document conditional styling based on component state
|
|
34
|
+
- Identify user preference or theme switching patterns
|
|
35
|
+
- Note any performance-critical styling operations
|
|
36
|
+
|
|
37
|
+
### Migration Considerations
|
|
38
|
+
|
|
39
|
+
- Aura CSS files become LWC CSS modules with different scoping
|
|
40
|
+
- SLDS usage patterns may need updates for LWC compatibility
|
|
41
|
+
- CSS custom properties and design tokens have different APIs
|
|
42
|
+
- Shadow DOM styling requires different approaches
|
|
43
|
+
- Global CSS access is more restricted in LWC
|
|
44
|
+
|
|
45
|
+
### Additional knowledge
|
|
46
|
+
|
|
47
|
+
#### Style Intent analysis
|
|
48
|
+
|
|
49
|
+
Your task is to look at the Aura Component definition, and make sure that the blueprint only describes the experiences a user may have with a component.
|
|
50
|
+
Developers often accidentially expose APIs that allow customization of styles or CSS classes.
|
|
51
|
+
|
|
52
|
+
Review Aura component above and fix its blueprint using following rules:
|
|
53
|
+
|
|
54
|
+
1. Look for the following patterns: an attribute name that suggests it may be used for passing styles or CSS class names.
|
|
55
|
+
2. For each match found, reason about the intent around the reference. Why is the style being provided and what is it used for in the component?
|
|
56
|
+
3. Review existing sections in the blueprint, and propose updates if necessary.
|
|
57
|
+
|
|
58
|
+
- If something appears in the 'styling' section already, verify it doesn't appear the data section.
|
|
59
|
+
- If something appears in both sections, the dataRequirements section should be updated to remove it.
|
|
60
|
+
|
|
61
|
+
* For each issue found, provide a separate, detailed report.
|
|
62
|
+
* Keep issues concise, avoid duplicated issues or unnecessary or non-applicable problems.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Aura to LWC Conversion Completeness Checklist
|
|
2
|
+
|
|
3
|
+
You are a Salesforce principal architect. Your task is to help a developer verify whether their conversion of a Salesforce Aura component to a Lightning Web Component (LWC) is truly complete. This is a developer-focused self-checklist, not a platform evaluation or LLM-as-judge scenario. The goal is to provide confidence and clarity for the developer, not to benchmark platform performance.
|
|
4
|
+
|
|
5
|
+
## Instructions
|
|
6
|
+
|
|
7
|
+
1. **Review the Completeness Metrics:**
|
|
8
|
+
For each of the following metrics, use the provided rating to assess the LWC conversion. For each metric, select one of the following qualitative ratings:
|
|
9
|
+
|
|
10
|
+
- **Excellent**: Perfect or near-perfect match in understanding and detail
|
|
11
|
+
- **Good**: Strong understanding with minor differences
|
|
12
|
+
- **Satisfactory**: Adequate understanding with some notable differences
|
|
13
|
+
- **Limited**: Basic understanding with significant gaps
|
|
14
|
+
- **Poor**: Major misunderstandings or omissions
|
|
15
|
+
- **Missing**: Issue completely overlooked or fatally misunderstood
|
|
16
|
+
|
|
17
|
+
2. **For Each Metric:**
|
|
18
|
+
|
|
19
|
+
- State the metric and its description
|
|
20
|
+
- Assign a rating (from the list above)
|
|
21
|
+
- Provide a brief justification for the rating
|
|
22
|
+
- Optionally, add one or two sentences explaining any gaps, strengths, or issues
|
|
23
|
+
|
|
24
|
+
3. **Checklist Output:**
|
|
25
|
+
|
|
26
|
+
- Present your results as a list, not a table
|
|
27
|
+
- For each metric, include:
|
|
28
|
+
- Metric name
|
|
29
|
+
- Description
|
|
30
|
+
- Rating
|
|
31
|
+
- Justification/comments
|
|
32
|
+
|
|
33
|
+
4. **Summary and Recommendations:**
|
|
34
|
+
|
|
35
|
+
- At the end, summarize your overall confidence in the conversion's completeness
|
|
36
|
+
- List specific, actionable recommendations to address any gaps or issues
|
|
37
|
+
|
|
38
|
+
5. **Context:**
|
|
39
|
+
|
|
40
|
+
- The component name is: `{{componentName}}`
|
|
41
|
+
- The Aura component file is: `{{componentName}}.cmp`
|
|
42
|
+
- The LWC template file is: `{{componentName}}.html`
|
|
43
|
+
- You have access to supporting files such as controllers, helpers, CSS, blueprints, Jest tests (in `__tests__`), and UTAM page objects (in `__utam__`).
|
|
44
|
+
|
|
45
|
+
6. **Important Notes:**
|
|
46
|
+
- This checklist is a comprehensive aid for developers to verify their work, not a judge of platform performance.
|
|
47
|
+
- The resulting ratings are confidence measures for the developer, not benchmarks.
|
|
48
|
+
- Each metric could, in the future, have a more detailed, dedicated tool for finer-grained verification, but avoid duplicating existing tools unless a true gap is identified.
|
|
49
|
+
- If you find that guidance is unclear or tools are not being applied consistently, note this as a potential process/tooling gap.
|
|
50
|
+
|
|
51
|
+
## Completeness Metrics and Scoring
|
|
52
|
+
|
|
53
|
+
- **Functional Parity**: Are all user-facing features, states, and flows from the Aura component present in the LWC?
|
|
54
|
+
|
|
55
|
+
- _Excellent_: All features and flows are present and work as intended.
|
|
56
|
+
- _Good_: Minor features or flows are missing or slightly altered.
|
|
57
|
+
- _Satisfactory_: Most features are present, but some notable differences exist.
|
|
58
|
+
- _Limited_: Several important features are missing or incomplete.
|
|
59
|
+
- _Poor_: Major features are missing or broken.
|
|
60
|
+
- _Missing_: No attempt at parity.
|
|
61
|
+
|
|
62
|
+
- **Event Handling**: Are all events (custom, platform, UI) handled equivalently in the LWC?
|
|
63
|
+
|
|
64
|
+
- _Excellent_: All events are handled as in Aura.
|
|
65
|
+
- _Good_: Minor event handling differences.
|
|
66
|
+
- _Satisfactory_: Most events handled, some notable gaps.
|
|
67
|
+
- _Limited_: Several events missing or mishandled.
|
|
68
|
+
- _Poor_: Major event handling missing.
|
|
69
|
+
- _Missing_: No event handling present.
|
|
70
|
+
|
|
71
|
+
- **Data Binding & State**: Are all data flows, attributes, and state transitions preserved and correctly mapped?
|
|
72
|
+
|
|
73
|
+
- _Excellent_: All data/state flows are preserved and correct.
|
|
74
|
+
- _Good_: Minor data/state differences.
|
|
75
|
+
- _Satisfactory_: Most data/state flows present, some gaps.
|
|
76
|
+
- _Limited_: Several data/state flows missing.
|
|
77
|
+
- _Poor_: Major data/state issues.
|
|
78
|
+
- _Missing_: No data/state mapping.
|
|
79
|
+
|
|
80
|
+
- **UI/UX Parity**: Is the user interface (including accessibility, responsiveness, and SLDS usage) equivalent?
|
|
81
|
+
|
|
82
|
+
- _Excellent_: UI/UX matches or improves on Aura.
|
|
83
|
+
- _Good_: Minor UI/UX differences.
|
|
84
|
+
- _Satisfactory_: Most UI/UX present, some gaps.
|
|
85
|
+
- _Limited_: Several UI/UX issues.
|
|
86
|
+
- _Poor_: Major UI/UX issues.
|
|
87
|
+
- _Missing_: No UI/UX parity.
|
|
88
|
+
|
|
89
|
+
- **Extensibility & Modularity**: Is the LWC designed for maintainability and future extension?
|
|
90
|
+
|
|
91
|
+
- _Excellent_: Highly modular and extensible.
|
|
92
|
+
- _Good_: Minor modularity/extensibility issues.
|
|
93
|
+
- _Satisfactory_: Adequate, but some concerns.
|
|
94
|
+
- _Limited_: Several modularity/extensibility issues.
|
|
95
|
+
- _Poor_: Major issues.
|
|
96
|
+
- _Missing_: Not modular/extensible.
|
|
97
|
+
|
|
98
|
+
- **Error Handling**: Are all error states and recovery actions present and clear in the LWC?
|
|
99
|
+
|
|
100
|
+
- _Excellent_: All error handling present and clear.
|
|
101
|
+
- _Good_: Minor error handling gaps.
|
|
102
|
+
- _Satisfactory_: Most error handling present, some gaps.
|
|
103
|
+
- _Limited_: Several error handling issues.
|
|
104
|
+
- _Poor_: Major error handling missing.
|
|
105
|
+
- _Missing_: No error handling.
|
|
106
|
+
|
|
107
|
+
- **Localization**: Are all labels/messages localized as in Aura?
|
|
108
|
+
|
|
109
|
+
- _Excellent_: All localization present.
|
|
110
|
+
- _Good_: Minor localization gaps.
|
|
111
|
+
- _Satisfactory_: Most localization present, some gaps.
|
|
112
|
+
- _Limited_: Several localization issues.
|
|
113
|
+
- _Poor_: Major localization missing.
|
|
114
|
+
- _Missing_: No localization.
|
|
115
|
+
|
|
116
|
+
- **Security & Access Control**: Are there any regressions in data access or exposure?
|
|
117
|
+
|
|
118
|
+
- _Excellent_: No regressions, all controls present.
|
|
119
|
+
- _Good_: Minor security/access gaps.
|
|
120
|
+
- _Satisfactory_: Most controls present, some gaps.
|
|
121
|
+
- _Limited_: Several security/access issues.
|
|
122
|
+
- _Poor_: Major security/access issues.
|
|
123
|
+
- _Missing_: No security/access controls.
|
|
124
|
+
|
|
125
|
+
- **Performance**: Is the LWC at least as performant, or improved, compared to Aura?
|
|
126
|
+
|
|
127
|
+
- _Excellent_: Performance matches or improves on Aura.
|
|
128
|
+
- _Good_: Minor performance differences.
|
|
129
|
+
- _Satisfactory_: Most performance present, some gaps.
|
|
130
|
+
- _Limited_: Several performance issues.
|
|
131
|
+
- _Poor_: Major performance issues.
|
|
132
|
+
- _Missing_: No performance consideration.
|
|
133
|
+
|
|
134
|
+
- **Salesforce Best Practices**: Does the LWC follow modern Salesforce LWC and SLDS guidelines?
|
|
135
|
+
|
|
136
|
+
- _Excellent_: All best practices followed.
|
|
137
|
+
- _Good_: Minor best practice gaps.
|
|
138
|
+
- _Satisfactory_: Most best practices followed, some gaps.
|
|
139
|
+
- _Limited_: Several best practice issues.
|
|
140
|
+
- _Poor_: Major best practice issues.
|
|
141
|
+
- _Missing_: No best practices followed.
|
|
142
|
+
|
|
143
|
+
- **Jest Test Coverage**: Are Jest unit tests present (usually in a `__tests__` folder) and do they cover key logic?
|
|
144
|
+
|
|
145
|
+
- _Excellent_: Comprehensive test coverage.
|
|
146
|
+
- _Good_: Minor test coverage gaps.
|
|
147
|
+
- _Satisfactory_: Most key logic covered, some gaps.
|
|
148
|
+
- _Limited_: Several test coverage issues.
|
|
149
|
+
- _Poor_: Major test coverage missing.
|
|
150
|
+
- _Missing_: No tests present.
|
|
151
|
+
|
|
152
|
+
- **UTAM Page Objects**: Are UTAM page objects generated (usually in a `__utam__` folder) for UI automation?
|
|
153
|
+
- _Excellent_: Comprehensive UTAM coverage.
|
|
154
|
+
- _Good_: Minor UTAM coverage gaps.
|
|
155
|
+
- _Satisfactory_: Most key UI flows covered, some gaps.
|
|
156
|
+
- _Limited_: Several UTAM coverage issues.
|
|
157
|
+
- _Poor_: Major UTAM coverage missing.
|
|
158
|
+
- _Missing_: No UTAM page objects present.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Example Output Structure
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
# Aura to LWC Conversion Completeness Checklist
|
|
166
|
+
|
|
167
|
+
- **Functional Parity**
|
|
168
|
+
- Description: Are all user-facing features, states, and flows from the Aura component present in the LWC?
|
|
169
|
+
- Rating: Good
|
|
170
|
+
- Justification: All major features are present, but one minor flow is missing.
|
|
171
|
+
- Comments: The save flow is slightly different, but overall parity is strong.
|
|
172
|
+
|
|
173
|
+
- **Event Handling**
|
|
174
|
+
- Description: Are all events (custom, platform, UI) handled equivalently in the LWC?
|
|
175
|
+
- Rating: Excellent
|
|
176
|
+
- Justification: All events are handled as in Aura.
|
|
177
|
+
|
|
178
|
+
... (repeat for each metric)
|
|
179
|
+
|
|
180
|
+
# Summary
|
|
181
|
+
|
|
182
|
+
Overall, the conversion is strong, with only minor gaps in functional parity and localization. Confidence in completeness is high.
|
|
183
|
+
|
|
184
|
+
# Recommendations
|
|
185
|
+
|
|
186
|
+
- Address the missing flow in functional parity.
|
|
187
|
+
- Improve localization for error messages.
|
|
188
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
## 💎 Values Expert Analysis Framework
|
|
2
|
+
|
|
3
|
+
### Analysis Focus
|
|
4
|
+
|
|
5
|
+
Analyze default values, configuration patterns, and value initialization in the Aura component.
|
|
6
|
+
|
|
7
|
+
### Key Areas to Review
|
|
8
|
+
|
|
9
|
+
#### 1. Default Value Analysis
|
|
10
|
+
|
|
11
|
+
- Document all attribute default values and their significance
|
|
12
|
+
- Identify initialization patterns and timing requirements
|
|
13
|
+
- Note any computed default values or dynamic initialization
|
|
14
|
+
- Check for environment-specific default value variations
|
|
15
|
+
|
|
16
|
+
#### 2. Configuration Management
|
|
17
|
+
|
|
18
|
+
- Analyze configuration attribute patterns and their usage
|
|
19
|
+
- Document how configuration values affect component behavior
|
|
20
|
+
- Identify any configuration validation or constraint patterns
|
|
21
|
+
- Note any hierarchical configuration inheritance
|
|
22
|
+
|
|
23
|
+
#### 3. Value Validation and Constraints
|
|
24
|
+
|
|
25
|
+
- Document any validation logic for attribute values
|
|
26
|
+
- Identify data type constraints and format requirements
|
|
27
|
+
- Note any business rule validation patterns
|
|
28
|
+
- Check for error handling of invalid values
|
|
29
|
+
|
|
30
|
+
#### 4. Value Transformation
|
|
31
|
+
|
|
32
|
+
- Analyze any value formatting or transformation logic
|
|
33
|
+
- Document currency, date, or number formatting patterns
|
|
34
|
+
- Identify any localization-specific value handling
|
|
35
|
+
- Note any value normalization or sanitization
|
|
36
|
+
|
|
37
|
+
### Migration Considerations
|
|
38
|
+
|
|
39
|
+
- Aura default values need equivalent LWC property initialization
|
|
40
|
+
- Configuration patterns may need LWC-specific approaches
|
|
41
|
+
- Validation logic needs to be migrated to LWC methods
|
|
42
|
+
- Value transformation may require different utility approaches
|
|
43
|
+
|
|
44
|
+
### Additional knowledge
|
|
45
|
+
|
|
46
|
+
#### Default Values analysis
|
|
47
|
+
|
|
48
|
+
Your task is to make sure that default values of Aura attributes are assigned to JavaScript properties of LWC component.
|
|
49
|
+
|
|
50
|
+
Review Aura component above and add default value of the attribute to the "what" property:
|
|
51
|
+
|
|
52
|
+
1. If default value is a constant, add its type and value even if the value is empty string or null.
|
|
53
|
+
For example for <aura:attribute name="index" type="String" default="0">
|
|
54
|
+
"""
|
|
55
|
+
"name": "index",
|
|
56
|
+
"what": "The index of the row being edited. Default value is string \"0\"."
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
2. If default value points to a static resource, infer namespace and name of the resource, not its value.
|
|
60
|
+
For example for <aura:attribute name="label" default="{!$Label.myOrg.myLabelName}">, default value should be mentioned like so:
|
|
61
|
+
"""
|
|
62
|
+
"name": "label",
|
|
63
|
+
"what": "The label next to input. Default value is a label from namespace \"myOrg\" with the name \"myLabelName\"".
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
- For each issue found, provide a separate, detailed report.
|
|
67
|
+
- Keep issues concise, avoid duplicated issues or unnecessary or non-applicable problems.
|
|
@@ -3,7 +3,16 @@ name: experience-content-media-search
|
|
|
3
3
|
description: "Searches for and retrieves existing visual media (images, logos, icons, photos, graphics, banners, thumbnails, hero images, backgrounds) from sources such as Salesforce CMS, Data 360 or any other source. Use this skill ANY TIME a user request involves finding, searching, getting, fetching, retrieving, grab, looking up, locating media. NEVER call search_media_cms_channels, search_electronic_media tools directly — always go through this skill first. This skill must be activated before any tool is used for media search or retrieval, without exception. Takes PRIORITY and activates FIRST when ANY media search/retrieval is mentioned, regardless of what else happens with the media afterward. Triggers for requests like \"search for logo\", \"find hero image\", \"get company logo\", \"locate icons\", \"fetch background image\", \"retrieve product photos\". Handles the search and source selection workflow. Does not apply when the request is about brand search, to generate NEW images with AI, or edit existing images."
|
|
4
4
|
compatibility: "Requires search_media_cms_channels and/or search_electronic_media MCP tools"
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.1"
|
|
7
|
+
relatedSkills:
|
|
8
|
+
- "experience-content-media-stock-image-search"
|
|
9
|
+
mcpTools:
|
|
10
|
+
content-readonly:
|
|
11
|
+
tools:
|
|
12
|
+
- search_media_cms_channels
|
|
13
|
+
- search_electronic_media
|
|
14
|
+
- get_channels
|
|
15
|
+
semver: "^1.0.0"
|
|
7
16
|
---
|
|
8
17
|
|
|
9
18
|
# Media Search
|
|
@@ -26,6 +35,7 @@ Universal routing skill for searching and retrieving existing images and media.
|
|
|
26
35
|
- Create graphics or designs from scratch
|
|
27
36
|
- Edit or modify existing images
|
|
28
37
|
- Build custom visuals or diagrams
|
|
38
|
+
- Search for stock photography or royalty-free images (use `experience-content-media-stock-image-search`)
|
|
29
39
|
|
|
30
40
|
## Before You Search
|
|
31
41
|
|
|
@@ -186,8 +196,7 @@ After the user selects an option, execute the corresponding search method below.
|
|
|
186
196
|
"searchKeyword": "keyword1 OR keyword2 OR keyword3",
|
|
187
197
|
"taxonomyExpression": "{\"OR\": [\"Taxonomy1\", \"Taxonomy2\"]}",
|
|
188
198
|
"searchLanguage": "en_US",
|
|
189
|
-
"
|
|
190
|
-
"channelType": "PublicUnauthenticated",
|
|
199
|
+
"contentAccessScope": "Public",
|
|
191
200
|
"contentTypeFqn": "sfdc_cms__image",
|
|
192
201
|
"pageOffset": 0,
|
|
193
202
|
"searchLimit": 5
|
|
@@ -199,8 +208,7 @@ After the user selects an option, execute the corresponding search method below.
|
|
|
199
208
|
- `searchKeyword`: Join keywords with ` OR ` (space-OR-space). Use empty string if no keywords.
|
|
200
209
|
- `taxonomyExpression`: Stringify JSON object `{"OR": ["term1", "term2"]}`. Use `"{}"` if no taxonomies.
|
|
201
210
|
- `searchLanguage`: Locale with underscore (e.g., `en_US`)
|
|
202
|
-
- `
|
|
203
|
-
- `channelType`: Always `"PublicUnauthenticated"`
|
|
211
|
+
- `contentAccessScope`: Always `"Public"` (covers both public-unauthenticated and public Experience Cloud site channels)
|
|
204
212
|
- `contentTypeFqn`: Always `"sfdc_cms__image"`
|
|
205
213
|
- `pageOffset`: Start at `0`, increment by `searchLimit` for pagination
|
|
206
214
|
- `searchLimit`: Default `5`, adjust if user requests more
|
|
@@ -214,8 +222,7 @@ Query: "luxury apartment with river view"
|
|
|
214
222
|
"searchKeyword": "apartment OR villa OR penthouse OR residence",
|
|
215
223
|
"taxonomyExpression": "{\"OR\": [\"Luxury\", \"Premium\", \"Waterfront\", \"Riverside\"]}",
|
|
216
224
|
"searchLanguage": "en_US",
|
|
217
|
-
"
|
|
218
|
-
"channelType": "PublicUnauthenticated",
|
|
225
|
+
"contentAccessScope": "Public",
|
|
219
226
|
"contentTypeFqn": "sfdc_cms__image",
|
|
220
227
|
"pageOffset": 0,
|
|
221
228
|
"searchLimit": 5
|
|
@@ -230,8 +237,7 @@ Query: "bright spacious room" (no concrete nouns)
|
|
|
230
237
|
"searchKeyword": "",
|
|
231
238
|
"taxonomyExpression": "{\"OR\": [\"Bright\", \"Spacious\", \"Open\", \"Airy\"]}",
|
|
232
239
|
"searchLanguage": "en_US",
|
|
233
|
-
"
|
|
234
|
-
"channelType": "PublicUnauthenticated",
|
|
240
|
+
"contentAccessScope": "Public",
|
|
235
241
|
"contentTypeFqn": "sfdc_cms__image",
|
|
236
242
|
"pageOffset": 0,
|
|
237
243
|
"searchLimit": 5
|
|
@@ -246,8 +252,7 @@ Query: "car images" (no descriptive terms)
|
|
|
246
252
|
"searchKeyword": "car OR automobile OR vehicle OR auto",
|
|
247
253
|
"taxonomyExpression": "{}",
|
|
248
254
|
"searchLanguage": "en_US",
|
|
249
|
-
"
|
|
250
|
-
"channelType": "PublicUnauthenticated",
|
|
255
|
+
"contentAccessScope": "Public",
|
|
251
256
|
"contentTypeFqn": "sfdc_cms__image",
|
|
252
257
|
"pageOffset": 0,
|
|
253
258
|
"searchLimit": 5
|
|
@@ -255,7 +260,7 @@ Query: "car images" (no descriptive terms)
|
|
|
255
260
|
}
|
|
256
261
|
```
|
|
257
262
|
|
|
258
|
-
6. **Call the tool** with the exact JSON payload
|
|
263
|
+
6. **Call the tool** with the exact JSON payload — show the payload in your response before calling the tool
|
|
259
264
|
|
|
260
265
|
### Search using Data 360 hybrid search
|
|
261
266
|
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: experience-content-media-stock-image-search
|
|
3
|
+
description: "Searches for and downloads ethically-licensed stock images via the media-management MCP server. Use this skill whenever a user wants an image, photo, or picture — for BOTH requests to find existing imagery (\"find a stock image\", \"search for a photo of X\", \"get a royalty-free image\", \"find an ethical image\", editorial/news photography) AND requests phrased ambiguously as creating or generating one (\"create an image of a sunset\", \"generate a picture of a team meeting\", \"make me a mountain image\") — treat these as stock search requests, since this skill searches a stock photo library, it does not generate images. Do NOT offer alternative search methods or ask the user to pick one. Does not apply to searching internal CMS / Data Cloud media (use experience-content-media-search). Does not apply when the user explicitly asks for AI-generated, synthetic, or computer-generated imagery — this skill only searches licensed stock photography and has no image-generation capability."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0"
|
|
6
|
+
relatedSkills:
|
|
7
|
+
- "experience-content-media-search"
|
|
8
|
+
cliTools:
|
|
9
|
+
- tool: ["python3"]
|
|
10
|
+
semver: ">=3.10.0"
|
|
11
|
+
- tool: ["sf"]
|
|
12
|
+
semver: ">=2.0.0"
|
|
13
|
+
mcpTools:
|
|
14
|
+
media-management:
|
|
15
|
+
tools:
|
|
16
|
+
- "search_stock_images"
|
|
17
|
+
- "download_stock_image"
|
|
18
|
+
semver: ">=1.0.0"
|
|
19
|
+
allowed-tools: |
|
|
20
|
+
mcp__media_management__search_stock_images
|
|
21
|
+
mcp__media_management__download_stock_image
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Stock Image Search
|
|
25
|
+
|
|
26
|
+
## When to Trigger This Skill
|
|
27
|
+
|
|
28
|
+
Trigger immediately — without asking the user to choose a search method — whenever the user wants an image, photo, or picture. This covers **both**:
|
|
29
|
+
|
|
30
|
+
- **Finding existing imagery:** "find a stock image", "search for a photo of X", "get a royalty-free image", "find an ethical image", editorial or news photography
|
|
31
|
+
- **Requests phrased ambiguously as creating or generating:** "create an image of a sunset", "generate a picture of a team meeting", "make me a mountain image" — treat these as stock search requests; this skill searches a stock photo library, it does not generate images.
|
|
32
|
+
|
|
33
|
+
In all of these cases, search the stock library — this is the tool for obtaining an image. **Do NOT offer alternative search methods** (hybrid search, user-provided URL/path, etc.) and **do NOT ask the user to pick one.**
|
|
34
|
+
|
|
35
|
+
**Does not apply to:**
|
|
36
|
+
- Searching internal CMS / Data Cloud media (use `experience-content-media-search`)
|
|
37
|
+
- Requests that explicitly ask for AI-generated, synthetic, or computer-generated imagery — this skill only searches licensed stock photography and has no image-generation capability
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 1 — Search
|
|
42
|
+
|
|
43
|
+
**MCP tool:** `search_stock_images` (server: `media-management`)
|
|
44
|
+
**Timeout:** 30 seconds
|
|
45
|
+
|
|
46
|
+
| Parameter | Required | Default | Notes |
|
|
47
|
+
|--------------|----------|-------------|------------------------------------------------------------------------------------|
|
|
48
|
+
| `query` | ✅ Yes | — | Natural language search phrase (e.g. "sunset over ocean", "business meeting"), max 500 chars |
|
|
49
|
+
| `searchType` | No | `Creative` | `Creative` (royalty-free stock), `Editorial` (rights-managed news/event imagery) |
|
|
50
|
+
| `orientation`| No | _(none)_ | `Horizontal`, `Vertical`, `Square`, `PanoramicHorizontal`, `PanoramicVertical` |
|
|
51
|
+
| `sortOrder` | No | `BestMatch` | `BestMatch`, `MostPopular`, `Newest` |
|
|
52
|
+
| `pageSize` | No | `5` | 1–100 |
|
|
53
|
+
| `page` | No | `1` | 1-indexed, must be >= 1 |
|
|
54
|
+
|
|
55
|
+
**Smart keyword extraction:** If the query is longer than 20 words or returns no results, the tool automatically extracts short keyword phrases via LLM and retries. The `effectiveQuery` field in the response shows what was actually sent to the search service (`null` if the original query was used unchanged).
|
|
56
|
+
|
|
57
|
+
**Response fields:**
|
|
58
|
+
|
|
59
|
+
| Field | Notes |
|
|
60
|
+
|-------------------|----------------------------------------------------------------------------------------------|
|
|
61
|
+
| `images[]` | List of results (see item fields below) |
|
|
62
|
+
| `totalCount` | Total matches across all pages |
|
|
63
|
+
| `page` | Current page (1-indexed) |
|
|
64
|
+
| `pageSize` | Results per page |
|
|
65
|
+
| `searchRequestId` | Internal correlation ID. Server-managed; not passed back through the MCP download tool. Safe to surface in debug output if useful. |
|
|
66
|
+
| `effectiveQuery` | Keywords actually sent to the search service. Null if the original query was used unchanged. |
|
|
67
|
+
| `errorMessage` | Non-null if the search failed |
|
|
68
|
+
|
|
69
|
+
**Each `images[]` item:**
|
|
70
|
+
|
|
71
|
+
| Field | Notes |
|
|
72
|
+
|----------------|----------------------------------------------------------------------|
|
|
73
|
+
| `assetId` | Stock asset ID — required for download. Safe to display alongside the result if useful. |
|
|
74
|
+
| `title` | Image title |
|
|
75
|
+
| `caption` | Image description |
|
|
76
|
+
| `thumbnailUrl` | Small preview URL — use for grid display |
|
|
77
|
+
| `previewUrl` | Larger comp/preview URL — use for tile display |
|
|
78
|
+
| `width` | Max width in pixels |
|
|
79
|
+
| `height` | Max height in pixels |
|
|
80
|
+
| `licenseModel` | e.g. `royaltyfree`, `rightsmanaged` |
|
|
81
|
+
| `artist` | Contributor/artist name |
|
|
82
|
+
| `collection` | Collection name |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Step 2 — Present Results, then STOP
|
|
87
|
+
|
|
88
|
+
Render a numbered list with an inline thumbnail for each result, using `thumbnailUrl` for the image and `previewUrl` as the click-through link (clicking the thumbnail opens the full preview in the browser):
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
1. [](<previewUrl>)
|
|
92
|
+
**<title>** — <artist>, <width>×<height>, <licenseModel>
|
|
93
|
+
2. ...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This is standard markdown image-in-link syntax (`[](previewUrl)`) — it renders an actual thumbnail, not just a text link, and clicking it navigates to `previewUrl`. If a client doesn't render markdown images, this degrades gracefully to a linked title.
|
|
97
|
+
|
|
98
|
+
Prefix the list with `Searched for: <effectiveQuery>` only if `effectiveQuery` is non-null and differs from the user's original query.
|
|
99
|
+
|
|
100
|
+
**End the turn here. Do not auto-download, do not write files, do not ask a follow-up question.** Agentforce injects its own selection UI — a question or auto-select causes a duplicate "double ask". Do not pick a result on behalf of the user.
|
|
101
|
+
|
|
102
|
+
**Non-interactive mode** (scheduled/headless, no user present): pick `images[0]` from the results and note the auto-selection in the report. Then proceed directly to Step 3.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Step 3 — Download (billed)
|
|
107
|
+
|
|
108
|
+
⚠️ **Each call licenses the image and spends a stock-image download credit. Only invoke after the user explicitly selects an image (or in non-interactive mode, as noted above).**
|
|
109
|
+
|
|
110
|
+
**Before calling `download_stock_image`, verify:**
|
|
111
|
+
- [ ] User has explicitly named or numbered the image they want (or non-interactive mode is confirmed)
|
|
112
|
+
- [ ] This is not an automatic retry of a previous download
|
|
113
|
+
|
|
114
|
+
**MCP tool:** `download_stock_image` (server: `media-management`)
|
|
115
|
+
**Timeout:** 60 seconds
|
|
116
|
+
|
|
117
|
+
| Parameter | Required | Default | Notes |
|
|
118
|
+
|-------------|----------|---------|----------------------------------------------------------------------------------------------------|
|
|
119
|
+
| `assetId` | ✅ Yes | — | Stock asset ID from the prior `search_stock_images` result, max 50 chars |
|
|
120
|
+
| `size` | No | `comp` | `comp` (web-quality composite, default), `medium_jpg`, `largest` (full res, can exceed 100 MB), max 50 chars |
|
|
121
|
+
|
|
122
|
+
Use `largest` only when the user explicitly asks for full/original resolution.
|
|
123
|
+
|
|
124
|
+
**Response fields:**
|
|
125
|
+
|
|
126
|
+
| Field | Notes |
|
|
127
|
+
|------------------------------|-----------------------------------------------------------------------|
|
|
128
|
+
| `assetId` | Stock asset ID that was downloaded |
|
|
129
|
+
| `managedContentBodyId` | Salesforce record ID where image bytes are stored |
|
|
130
|
+
| `parentContentGenAiOutputId` | Record tracking the download request |
|
|
131
|
+
| `childContentGenAiOutputId` | Record linking the request to the persisted body |
|
|
132
|
+
| `byteCount` | Size of the persisted image in bytes |
|
|
133
|
+
| `format` | Resolved image format (e.g. `jpg`, `png`, `eps`, `tiff`, `svg`) |
|
|
134
|
+
| `url` | **URL to the persisted image** — use this to download or preview it |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 4 — Download to Client and Preview
|
|
139
|
+
|
|
140
|
+
After a successful `download_stock_image` call, download the image locally and open it in VS Code.
|
|
141
|
+
|
|
142
|
+
**You MUST use `download-stock-image.py` for this. Do not use `curl`, `wget`, or any other tool.**
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
python3 scripts/download-stock-image.py \
|
|
146
|
+
--url "<url from download response>" \
|
|
147
|
+
--id "<assetId>" \
|
|
148
|
+
--format "<format from download response>" \
|
|
149
|
+
--preview
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
The script retrieves org credentials via the `sf` CLI (`sf config get target-org` and `sf org auth show-access-token`), downloads the image with `Authorization: Bearer <accessToken>` to `stockimages/<assetId>.<format>`, and opens it in VS Code if `--preview` is passed.
|
|
153
|
+
|
|
154
|
+
Pass `--output-dir <path>` to override the default `stockimages/` directory.
|
|
155
|
+
|
|
156
|
+
**Never resize or post-process the image.** Use CSS (`width`, `height`, `object-fit`) to control display dimensions.
|
|
157
|
+
|
|
158
|
+
**Vector/binary formats (`eps`, `tiff`):** always pass the exact `format` returned by the download response — never substitute a format like `jpg` to work around a validation error; the file bytes won't match the extension and the file will appear corrupted. VS Code cannot render `eps`/`tiff` previews, so the script skips `--preview` for those formats automatically and still reports the saved path.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Step 5 — Report Back
|
|
163
|
+
|
|
164
|
+
After a successful download, tell the user:
|
|
165
|
+
- Image title and artist
|
|
166
|
+
- Local path to the saved image (printed by the script)
|
|
167
|
+
- `managedContentBodyId`
|
|
168
|
+
- Attribution: `{artist} · {collection}` (use the attribution string returned by the download response when present)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Fallbacks & Errors
|
|
173
|
+
|
|
174
|
+
| Situation | Action |
|
|
175
|
+
|------------------------------------|------------------------------------------------------------------------------|
|
|
176
|
+
| `errorMessage` non-null in search | Show it; suggest a simpler query or different `searchType`/`orientation` |
|
|
177
|
+
| `images` empty | Suggest broader keywords; try switching `Editorial` vs `Creative` |
|
|
178
|
+
| `effectiveQuery` differs | Inform user what the search service actually received |
|
|
179
|
+
| MCP tools unavailable | Use the placeholder URL below — do not download or save |
|
|
180
|
+
| Download fails | Show error; do NOT retry automatically — confirm with user first (each retry is billed) |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Placeholder
|
|
185
|
+
|
|
186
|
+
If `search_stock_images` and `download_stock_image` are both unavailable, use this URL directly as `src` or CSS `url()`:
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
https://cdn.scs.static.lightning.force.com/content/assets/d5222d4a11e6c2b735152d7eea824ce4/placeholder.svg
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Placeholder policy:** There is only one placeholder URL. Do not download it, modify it, or generate alternative placeholders using Python, ImageMagick, or any other tool. If the user asks for a placeholder of a specific size or format, tell them only this URL is available and direct them to use CSS to scale it at the point of use.
|