@salesforce/afv-skills 1.41.0 → 1.43.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 +2 -6
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +3 -0
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +4 -0
- package/skills/design-systems-slds-validate/SKILL.md +2 -2
- package/skills/dx-app-analytics-query/SKILL.md +1 -3
- package/skills/dx-devops-conflict-resolve/SKILL.md +205 -0
- package/skills/dx-devops-conflict-resolve/examples/conflict-workflows.md +165 -0
- package/skills/dx-devops-conflict-resolve/references/deploy-failure-resolution.md +75 -0
- package/skills/dx-devops-conflict-resolve/references/git-conflict-resolution.md +124 -0
- package/skills/dx-devops-conflict-resolve/scripts/detect-conflicts.sh +91 -0
- package/skills/dx-devops-conflict-resolve/scripts/diagnose-deploy-failure.sh +156 -0
- package/skills/dx-devops-request-status/SKILL.md +160 -0
- package/skills/dx-devops-request-status/examples/polling-workflows.md +101 -0
- package/skills/dx-devops-request-status/references/cli-commands.md +176 -0
- package/skills/dx-devops-request-status/scripts/poll-status.sh +134 -0
- package/skills/dx-devops-test-failures-analyze/SKILL.md +6 -6
- package/skills/dx-devops-test-pipeline-configure/SKILL.md +7 -7
- package/skills/dx-devops-test-suite-assignments-configure/SKILL.md +6 -6
- package/skills/dx-devops-test-suite-run/SKILL.md +6 -6
- package/skills/dx-devops-work-item-manage/SKILL.md +2 -0
- package/skills/dx-org-manage/references/creating-scratch-org.md +5 -2
- package/skills/dx-org-manage/references/creating-snapshot.md +1 -0
- package/skills/dx-org-shape-manage/SKILL.md +152 -0
- package/skills/dx-org-shape-manage/examples/create_error_output.json +9 -0
- package/skills/dx-org-shape-manage/examples/create_success_output.json +9 -0
- package/skills/dx-org-shape-manage/examples/delete_output.json +11 -0
- package/skills/dx-org-shape-manage/examples/list_inactive_output.json +32 -0
- package/skills/dx-org-shape-manage/examples/list_output.json +24 -0
- package/skills/dx-org-shape-manage/references/cli_flags.md +135 -0
- package/skills/dx-org-switch/SKILL.md +2 -2
- package/skills/dx-org-trial-expiration-check/SKILL.md +2 -0
- package/skills/dx-pkg-post-install-configure/SKILL.md +3 -0
- package/skills/education-cloud-multi-campus-configure/SKILL.md +211 -0
- package/skills/education-cloud-multi-campus-configure/examples/hierarchy_visualization.md +174 -0
- package/skills/education-cloud-multi-campus-configure/examples/output_examples.md +54 -0
- package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input.csv +29 -0
- package/skills/education-cloud-multi-campus-configure/examples/sample_hierarchy_input_edgecases.csv +16 -0
- package/skills/education-cloud-multi-campus-configure/references/account_recordtype_prerequisite.md +44 -0
- package/skills/education-cloud-multi-campus-configure/references/delta_computation.md +33 -0
- package/skills/education-cloud-multi-campus-configure/references/error_handling.md +198 -0
- package/skills/education-cloud-multi-campus-configure/references/foundation_prerequisites.md +54 -0
- package/skills/education-cloud-multi-campus-configure/references/gotchas.md +16 -0
- package/skills/education-cloud-multi-campus-configure/references/hierarchy_parsing_rules.md +133 -0
- package/skills/education-cloud-multi-campus-configure/references/mcp-invocation.md +75 -0
- package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/SKILL.md +1 -1
- package/skills/experience-cms-brand-apply/SKILL.md +4 -1
- package/skills/experience-cms-brand-create/SKILL.md +197 -0
- package/skills/experience-cms-brand-create/assets/brand-template.json +329 -0
- package/skills/experience-cms-brand-create/references/brand-anatomy.md +120 -0
- package/skills/experience-cms-brand-create/references/disk-contract.md +84 -0
- package/skills/experience-cms-content-generate/SKILL.md +190 -0
- package/skills/experience-cms-content-generate/assets/display-formats.md +84 -0
- package/skills/experience-cms-content-generate/assets/payloads/create-content-bulk.json +11 -0
- package/skills/experience-cms-content-generate/assets/payloads/create-content-single.json +11 -0
- package/skills/experience-cms-content-generate/assets/payloads/publish-content.json +4 -0
- package/skills/experience-cms-content-generate/assets/payloads/update-content.json +9 -0
- package/skills/experience-cms-content-generate/assets/questions.md +241 -0
- package/skills/experience-cms-content-generate/examples/create-content-call.md +81 -0
- package/skills/experience-cms-content-generate/references/bulk-batching.md +56 -0
- package/skills/experience-cms-content-generate/references/content-type-classification.md +88 -0
- package/skills/experience-cms-content-generate/references/content-write-tool.md +95 -0
- package/skills/experience-cms-content-generate/references/delegation-protocol.md +37 -0
- package/skills/experience-cms-content-generate/references/edit-publish-workflow.md +63 -0
- package/skills/experience-cms-content-generate/references/error-recovery.md +72 -0
- package/skills/experience-cms-content-generate/references/identifier-resolution.md +26 -0
- package/skills/experience-cms-content-generate/references/intent-routing.md +45 -0
- package/skills/experience-cms-content-generate/references/principles.md +19 -0
- package/skills/experience-cms-content-generate/references/ux-rules.md +68 -0
- package/skills/experience-cms-content-generate/references/workspace-resolution.md +33 -0
- package/skills/experience-cms-content-type-generate/SKILL.md +449 -0
- package/skills/experience-cms-content-type-generate/assets/discovery-prompts.md +79 -0
- package/skills/experience-cms-content-type-generate/assets/schema-example.json +70 -0
- package/skills/experience-cms-content-type-generate/references/agent-checklist.md +50 -0
- package/skills/experience-cms-content-type-generate/references/anti-patterns.md +39 -0
- package/skills/experience-cms-content-type-generate/references/deployment-errors.md +27 -0
- package/skills/experience-cms-content-type-generate/references/discovery-details.md +106 -0
- package/skills/experience-cms-content-type-generate/references/discovery-query-rules.md +85 -0
- package/skills/experience-cms-content-type-generate/references/edit-fields-loop.md +48 -0
- package/skills/experience-cms-content-type-generate/references/pre-deploy-checklist.md +21 -0
- package/skills/experience-cms-content-type-generate/references/retrieve-and-reconcile.md +105 -0
- package/skills/experience-cms-content-type-generate/references/schema-rules.md +51 -0
- package/skills/experience-cms-content-type-generate/references/schema-summary-format.md +60 -0
- package/skills/experience-lds-graphql-generate/SKILL.md +4 -0
- package/skills/experience-lwc-accessibility-jest-run/SKILL.md +79 -0
- package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +205 -0
- package/skills/experience-lwc-design-generate/SKILL.md +5 -4
- package/skills/experience-lwc-generate/SKILL.md +10 -9
- package/skills/experience-ui-bundle-deploy/references/dev-preview.md +21 -0
- package/skills/experience-ui-bundle-deploy/references/social-login.md +1 -0
- package/skills/experience-ui-bundle-file-upload-generate/SKILL.md +6 -6
- package/skills/experience-ui-bundle-localize/SKILL.md +30 -37
- package/skills/experience-ui-bundle-localize/references/gotchas.md +23 -7
- package/skills/experience-ui-bundle-localize/references/i18n-setup.md +48 -4
- package/skills/experience-ui-bundle-localize/references/label-xml.md +22 -8
- package/skills/experience-ui-bundle-localize/references/verifying.md +39 -11
- package/skills/experience-ui-bundle-localize/scripts/detect-bundle-type.sh +118 -15
- package/skills/experience-ui-bundle-localize/scripts/tests/test-detect-bundle-type.sh +187 -0
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +13 -2
- package/skills/experience-ui-bundle-mfa-configure/references/social-login.md +1 -0
- package/skills/experience-ui-bundle-project-generate/SKILL.md +2 -2
- package/skills/integration-connectivity-generate/SKILL.md +11 -10
- package/skills/integration-eventing-cdc-configure/SKILL.md +6 -6
- package/skills/integration-eventing-subscription-configure/SKILL.md +6 -5
- package/skills/mobile-platform-native-capabilities-integrate/SKILL.md +2 -2
- package/skills/mobile-platform-offline-validate/scripts/package.json +1 -1
- package/skills/platform-agentexchange-partner-offers-configure/SKILL.md +8 -8
- package/skills/platform-custom-application-generate/SKILL.md +2 -0
- package/skills/platform-custom-field-generate/SKILL.md +8 -6
- package/skills/platform-custom-metadata-type-generate/SKILL.md +460 -0
- package/skills/platform-custom-metadata-type-generate/references/cmdt-records.md +251 -0
- package/skills/platform-custom-metadata-type-generate/scripts/sanitize-developer-name.sh +46 -0
- package/skills/platform-custom-setting-generate/SKILL.md +419 -0
- package/skills/platform-dataspace-access-configure/SKILL.md +3 -3
- package/skills/platform-sharing-owd-configure/SKILL.md +3 -0
- package/skills/platform-value-set-generate/SKILL.md +2 -0
- package/skills/service-agentforce-channel-configure/SKILL.md +29 -20
- package/skills/service-agentforce-channel-configure/assets/BotEmailDefinition.botEmailDefinition-meta.xml +36 -0
- package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email +17 -0
- package/skills/service-agentforce-channel-configure/assets/email/unfiled$public/AgentforceForServiceEmailTemplate.email-meta.xml +29 -0
- package/skills/service-agentforce-channel-configure/assets/mdapi-package.xml +25 -0
- package/skills/service-agentforce-channel-configure/assets/settings-mdapi-package.xml +30 -0
- package/skills/service-agentforce-channel-configure/references/agent-wiring.md +20 -0
- package/skills/service-agentforce-channel-configure/references/botemaildefinition.md +107 -0
- package/skills/service-agentforce-channel-configure/references/channel-branch-email.md +203 -50
- package/skills/service-agentforce-channel-configure/references/channel-types.md +30 -3
- package/skills/service-agentforce-channel-configure/references/queue-resolution.md +17 -8
- package/skills/service-agentforce-channel-configure/references/routing-flow.md +14 -3
- package/skills/service-agentforce-channel-configure/scripts/validate-botemaildefinition.py +126 -0
- package/skills/service-agentforce-channel-configure/scripts/validate-emailtemplate.py +133 -0
- package/skills/service-de-channel-activate/SKILL.md +271 -0
- package/skills/service-de-channel-activate/references/gotchas.md +31 -0
- package/skills/service-de-channel-activate/references/phone-verification.md +96 -0
- package/skills/service-de-channel-activate/references/worked-examples.md +14 -0
- package/skills/service-de-channel-consent-configure/SKILL.md +230 -0
- package/skills/service-de-channel-consent-configure/references/gotchas.md +41 -0
- package/skills/service-de-channel-consent-configure/references/language-keywords.md +84 -0
- package/skills/service-de-channel-consent-configure/references/worked-examples.md +134 -0
- package/skills/service-de-channel-create/SKILL.md +369 -0
- package/skills/service-de-channel-create/references/apple.md +59 -0
- package/skills/service-de-channel-create/references/connect-insert.md +84 -0
- package/skills/service-de-channel-create/references/facebook.md +154 -0
- package/skills/service-de-channel-create/references/line.md +66 -0
- package/skills/service-de-channel-create/references/sms.md +98 -0
- package/skills/service-de-channel-create/references/whatsapp.md +98 -0
- package/skills/service-de-channel-create/references/worked-examples.md +70 -0
- package/skills/service-de-channel-routing-configure/SKILL.md +345 -0
- package/skills/service-de-channel-routing-configure/references/asa-routing.md +90 -0
- package/skills/service-de-channel-routing-configure/references/gotchas.md +27 -0
- package/skills/service-de-channel-routing-configure/references/queue-creation.md +123 -0
- package/skills/service-de-channel-routing-configure/references/target-locate.md +98 -0
- package/skills/service-de-channel-routing-configure/references/worked-examples.md +174 -0
- package/skills/service-de-headless-channel-configure/SKILL.md +305 -0
- package/skills/service-de-headless-channel-configure/references/gotchas.md +27 -0
- package/skills/service-de-headless-channel-configure/references/inputs.md +49 -0
- package/skills/service-de-headless-channel-configure/references/output-envelopes.md +53 -0
- package/skills/service-de-headless-channel-configure/references/partial-success.md +24 -0
- package/skills/service-de-headless-channel-configure/references/terms-and-conditions.md +54 -0
- package/skills/service-de-headless-channel-configure/references/worked-examples.md +108 -0
- package/skills/service-de-waba-integrate/SKILL.md +227 -0
- package/skills/service-digital-engagement-channel-configure/scripts/check-api-version.sh +29 -0
- package/skills/service-digital-engagement-messaging-site-integrate/SKILL.md +10 -9
- package/skills/service-digital-engagement-messaging-site-integrate/references/lwr_patch.md +39 -21
- package/skills/service-digital-engagement-messaging-site-integrate/scripts/patch_lwr_bundle.sh +157 -96
- package/skills/service-email-to-case-configure/SKILL.md +190 -0
- package/skills/service-email-to-case-configure/assets/CaseSettings.settings-meta.xml +45 -0
- package/skills/service-email-to-case-configure/examples/CaseSettings-two-addresses.settings-meta.xml +36 -0
- package/skills/service-email-to-case-configure/references/apply-mechanics.md +73 -0
- package/skills/service-email-to-case-configure/references/routing_address_reference.md +73 -0
- package/skills/service-email-to-case-configure/references/troubleshooting.md +25 -0
- package/skills/service-email-to-case-configure/scripts/apply-casesettings.py +1315 -0
- package/skills/service-email-to-case-configure/scripts/check-agent-email-capability.sh +26 -0
- package/skills/service-email-to-case-configure/scripts/tests/__init__.py +0 -0
- package/skills/service-email-to-case-configure/scripts/tests/_bootstrap.py +45 -0
- package/skills/service-email-to-case-configure/scripts/tests/_fakeorg.py +366 -0
- package/skills/service-email-to-case-configure/scripts/tests/_run.py +84 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_apply_org_scenarios.py +655 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_get_session.py +134 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_new_capabilities.py +193 -0
- package/skills/service-email-to-case-configure/scripts/tests/test_validate_casesettings.py +170 -0
- package/skills/service-email-to-case-configure/scripts/validate-casesettings.py +229 -0
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +33 -15
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +63 -47
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +17 -12
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/references/cli-invocation.md +5 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/scripts/classify-enable-plan.mjs +11 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +8 -6
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/references/cli-invocation.md +3 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/scripts/classify-readiness.mjs +11 -3
- package/skills/service-itsm-agentic-setup-configure/SKILL.md +5 -5
- package/skills/service-itsm-agentic-setup-configure/examples/output-templates.md +5 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +2 -2
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +11 -7
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +20 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +10 -6
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/action-availability.md +7 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +11 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/build-create-body.mjs +24 -17
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/classify-action-availability.mjs +98 -58
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +20 -7
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/strip-release-management.mjs +176 -0
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +19 -19
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/cli-invocation.md +3 -4
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/helper-contracts.md +6 -6
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/references/permset-topology.md +3 -10
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/scripts/classify-permset-availability.mjs +7 -9
- package/skills/service-itsm-incident-mgmt-configure/SKILL.md +2 -0
- package/skills/service-itsm-incident-priority-configure/SKILL.md +15 -12
- package/skills/service-itsm-incident-priority-configure/examples/matrix-operations.md +27 -1
- package/skills/service-itsm-incident-priority-configure/references/sf-cli-invocation.md +37 -6
- package/skills/service-native-voice-recording-transcription-configure/SKILL.md +146 -0
- package/skills/service-native-voice-recording-transcription-configure/assets/confirmation-output.json +16 -0
- package/skills/service-native-voice-recording-transcription-configure/assets/package.xml +22 -0
- package/skills/service-native-voice-recording-transcription-configure/references/thunderbird-voice-settings.md +101 -0
- package/skills/service-native-voice-recording-transcription-configure/scripts/enable-recording-transcription.sh +181 -0
- package/skills/data360-activate/README.md +0 -38
- package/skills/data360-activate/SKILL.md +0 -127
- package/skills/data360-connect/README.md +0 -57
- package/skills/data360-connect/SKILL.md +0 -163
- package/skills/data360-connect/examples/connections/heroku-postgres.json +0 -15
- package/skills/data360-connect/examples/connections/ingest-api-connection.json +0 -5
- package/skills/data360-connect/examples/connections/ingest-api-schema.json +0 -31
- package/skills/data360-connect/examples/connections/redshift.json +0 -16
- package/skills/data360-connect/examples/connections/sharepoint-unstructured.json +0 -20
- package/skills/data360-connect/examples/connections/snowflake-connection.json +0 -42
- package/skills/data360-harmonize/README.md +0 -31
- package/skills/data360-harmonize/SKILL.md +0 -126
- package/skills/data360-orchestrate/README.md +0 -120
- package/skills/data360-orchestrate/SKILL.md +0 -263
- package/skills/data360-orchestrate/assets/definitions/activation-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/activation.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/calculated-insight.template.json +0 -7
- package/skills/data360-orchestrate/assets/definitions/data-action-target.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-action.template.json +0 -5
- package/skills/data360-orchestrate/assets/definitions/data-graph.template.json +0 -21
- package/skills/data360-orchestrate/assets/definitions/data-stream.template.json +0 -55
- package/skills/data360-orchestrate/assets/definitions/dmo.template.json +0 -17
- package/skills/data360-orchestrate/assets/definitions/identity-resolution.template.json +0 -30
- package/skills/data360-orchestrate/assets/definitions/mapping.template.json +0 -14
- package/skills/data360-orchestrate/assets/definitions/relationship.template.json +0 -12
- package/skills/data360-orchestrate/assets/definitions/search-index.template.json +0 -9
- package/skills/data360-orchestrate/assets/definitions/segment.template.json +0 -16
- package/skills/data360-orchestrate/references/feature-readiness.md +0 -157
- package/skills/data360-orchestrate/references/plugin-setup.md +0 -138
- package/skills/data360-orchestrate/scripts/bootstrap-plugin.sh +0 -53
- package/skills/data360-orchestrate/scripts/diagnose-org.mjs +0 -511
- package/skills/data360-orchestrate/scripts/generate-manifest.mjs +0 -68
- package/skills/data360-orchestrate/scripts/verify-plugin.sh +0 -58
- package/skills/data360-prepare/README.md +0 -50
- package/skills/data360-prepare/SKILL.md +0 -203
- package/skills/data360-prepare/examples/ingestion-api/.env.example +0 -8
- package/skills/data360-prepare/examples/ingestion-api/README.md +0 -48
- package/skills/data360-prepare/examples/ingestion-api/send-data.py +0 -144
- package/skills/data360-query/README.md +0 -43
- package/skills/data360-query/SKILL.md +0 -128
- package/skills/data360-query/examples/search-indexes/hybrid-structured.json +0 -44
- package/skills/data360-query/examples/search-indexes/vector-knowledge.json +0 -43
- package/skills/data360-segment/README.md +0 -35
- package/skills/data360-segment/SKILL.md +0 -123
- package/skills/service-helpagent-coordinate/references/channel-help-portal.md +0 -22
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-1-1-non-text-content.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-i-lists.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-ii-tables.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iii-form-labels.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-iv-regions.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-1-v-groups.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-3-5-identify-input.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-1-4-3-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-1-1-keyboard.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-4-link-purpose.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-4-6-headings-labels.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-3-label-in-name.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-2-5-7-dragging-movement.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-1-on-focus.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-2-2-on-input.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-1-error-identification.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-2-labels-instructions.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-3-3-3-error-suggestion.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-i-name.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-ii-role.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/reviewers/sc-4-1-2-iii-value.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-1-1-non-text-content.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-1-use-of-color.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-10-resize-reflow.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-11-non-text-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/references/vision/sc-1-4-3-contrast.md +0 -0
- /package/skills/{experience-lwc-accessibility-validate → experience-accessibility-validate}/scripts/contrast-ratio.py +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Schema rules (validator truth)
|
|
2
|
+
|
|
3
|
+
The CMS deploy validator is the source of truth — not the per-type metaschemas.
|
|
4
|
+
|
|
5
|
+
## Bundle root (`schema.json`)
|
|
6
|
+
|
|
7
|
+
- **MUST include**: `"title"`, `"description"`, `"lightning:type": "lightning__objectType"`, `"lightning:mixinTypes": { "sfdc_cms:metadataContent": {} }`, `"properties"`, `"required"`, `"unevaluatedProperties": false` (root only — do NOT set `unevaluatedProperties` on individual field entries inside `properties`).
|
|
8
|
+
- **MUST NOT include**: `"$schema"` at root.
|
|
9
|
+
|
|
10
|
+
## Per-field rules
|
|
11
|
+
|
|
12
|
+
**Allowed top-level keys per field**: `title`, `description`, `lightning:type`, `lightning:uiOptions`, plus the type-specific keys in the table below. **Nothing else.**
|
|
13
|
+
|
|
14
|
+
**Forbidden top-level keys on any field** (validator rejects under `unevaluatedProperties: false`):
|
|
15
|
+
- `type` (the JSON Schema `"type": "string"` etc — never write it; `lightning:type` is the only type marker)
|
|
16
|
+
- `format` (e.g. `"format": "date"` on a date field)
|
|
17
|
+
- `default`
|
|
18
|
+
- Any other JSON Schema keyword not in this skill
|
|
19
|
+
|
|
20
|
+
**`lightning:uiOptions` rules (sharp edge — caused multi-attempt auto-fix loops):**
|
|
21
|
+
- If you write `lightning:uiOptions`, it **MUST** contain a non-empty `placeholderText` string. Empty `{}` fails validation with `placeholderText: is missing but it is required`.
|
|
22
|
+
- The default-minimal rule means: **omit `lightning:uiOptions` entirely** unless the user asked for placeholders. Do NOT write `"lightning:uiOptions": {}`.
|
|
23
|
+
- All-or-nothing: include `lightning:uiOptions` with a real `placeholderText`, or omit the key completely.
|
|
24
|
+
|
|
25
|
+
`lightning:uiOptions` (with a real `placeholderText`) is accepted on **every** type. The columns below are the *additional* type-specific keys allowed alongside `lightning:type`.
|
|
26
|
+
|
|
27
|
+
| `lightning:type` | Accepted keys |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `lightning__textType` | `minLength`, `maxLength`, `lightning:textIndexed`, `lightning:localizable`, `enum`, `const` |
|
|
30
|
+
| `lightning__multilineTextType` | `minLength`, `maxLength`, `lightning:textIndexed`, `lightning:localizable` |
|
|
31
|
+
| `lightning__richTextType` | `minLength`, `maxLength`, `lightning:textIndexed`, `lightning:localizable` |
|
|
32
|
+
| `lightning__urlType` | `lightning:allowedUrlSchemes` (required), `lightning:localizable`, `readOnly` |
|
|
33
|
+
| `lightning__dateType` | `lightning:localizable` |
|
|
34
|
+
| `lightning__dateTimeType` | `lightning:localizable` |
|
|
35
|
+
| `lightning__booleanType` | (none) |
|
|
36
|
+
| `lightning__integerType` | `minimum`, `maximum`, `const` |
|
|
37
|
+
| `lightning__numberType` | `minimum`, `maximum`, `const` |
|
|
38
|
+
| `lightning__imageType` | (none — do NOT add `type`, `format`, or any other key) |
|
|
39
|
+
|
|
40
|
+
Default-minimal: only set type-specific keys when the user explicitly asks. The columns above are validator-accepted; they are not defaults to apply automatically.
|
|
41
|
+
|
|
42
|
+
## Validator quirks
|
|
43
|
+
|
|
44
|
+
- `lightning:mixinTypes` accepts ONLY `sfdc_cms:metadataContent`. Any other mixin fails.
|
|
45
|
+
- `enum` is only valid for `lightning__textType`.
|
|
46
|
+
- `required` referencing a missing property is not deploy-enforced — but keep it consistent.
|
|
47
|
+
- No `default` values anywhere — validator rejects them.
|
|
48
|
+
|
|
49
|
+
## Default-minimal rule (step 3a)
|
|
50
|
+
|
|
51
|
+
Do NOT add `lightning:textIndexed`, `lightning:localizable`, length/range bounds, `enum`, `const`, or `placeholderText` unless the user asked. Match the request, nothing more. The user can request additions in step 3b.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Step 7.5 — schema summary format
|
|
2
|
+
|
|
3
|
+
Runs whenever `{fqn, schema}` has been resolved, regardless of source (local, grounding, retrieve, or new-and-deployed) or of `suppressCreateContentPrompt`. The user always sees what the type contains before the workflow ends or hands off. Callers that suppress the trailing prompt (step 8) still get the summary — the summary is informational, not a turn.
|
|
4
|
+
|
|
5
|
+
## When to run
|
|
6
|
+
|
|
7
|
+
- Step 1e returned `{fqn, schema}` (existing type reconciled — from local, from grounding, or from `sf project retrieve`).
|
|
8
|
+
- Step 7e succeeded (new type created and deployed — the schema is the one just written).
|
|
9
|
+
- Step 1e's drift-prompt "Deploy local to org" branch reached 7e.
|
|
10
|
+
- **Step 1e's "local only" branch** — BEFORE the `Deploy it? Yes / Cancel` prompt, print the summary of the LOCAL schema so the user sees what they'd be deploying (a local-only bundle is the most likely case to be stale or hand-edited). Header: `Local schema for "<fqn>" (not yet in the org):`.
|
|
11
|
+
|
|
12
|
+
## When NOT to run
|
|
13
|
+
|
|
14
|
+
- User picked `Cancel` at any point.
|
|
15
|
+
- Step 7b (user answered "No — I'll deploy later") — no resolved schema in the org, nothing to summarize.
|
|
16
|
+
- Any error path exited without a resolved `{fqn, schema}`.
|
|
17
|
+
|
|
18
|
+
## Format — one line + one markdown table
|
|
19
|
+
|
|
20
|
+
Printed as chat text (NOT inside an `ask_user_tool`):
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
Content type "<fqn>" is ready. Schema:
|
|
24
|
+
|
|
25
|
+
| # | API name | Type | Required | Constraints | Title |
|
|
26
|
+
|---|---|---|---|---|---|
|
|
27
|
+
| 1 | `title` | `lightning__textType` | yes | maxLength: 200 | Title |
|
|
28
|
+
| 2 | `body` | `lightning__richTextType` | yes | — | Body |
|
|
29
|
+
| 3 | `publishDate` | `lightning__dateType` | no | — | Publish Date |
|
|
30
|
+
| 4 | `ctaUrl` | `lightning__urlType` | no | allowedUrlSchemes: ["https"] | Call to Action |
|
|
31
|
+
| 5 | `heroImage` | `lightning__imageType` | no | — | Hero Image |
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Column rules
|
|
35
|
+
|
|
36
|
+
- **`#`** — 1-indexed order from `schema.properties` (JSON key order).
|
|
37
|
+
- **`API name`** — the property key, backticked.
|
|
38
|
+
- **`Type`** — the `lightning:type` value, backticked.
|
|
39
|
+
- **`Required`** — `yes` if the key is in `schema.required`, else `no`.
|
|
40
|
+
- **`Constraints`** — a compact, comma-separated summary of the property's declared constraints:
|
|
41
|
+
- Include `minLength`, `maxLength`, `minimum`, `maximum`, `enum` (as `enum: [a, b, c]`, truncated to 3 with `…` if longer), `pattern` (as `pattern: <regex>`), `format`, `lightning:allowedUrlSchemes`, `readOnly`, `lightning:localizable`, `lightning:textIndexed`, `const`.
|
|
42
|
+
- If a field has no declared constraints, emit `—` (em-dash), NOT an empty cell.
|
|
43
|
+
- Do NOT include `lightning:type` here — it's already in the `Type` column.
|
|
44
|
+
- Do NOT include `lightning:uiOptions.placeholderText` — it's not a constraint.
|
|
45
|
+
- **`Title`** — the property's `title` value, or the API name humanized if `title` is missing.
|
|
46
|
+
|
|
47
|
+
## Sort / truncation
|
|
48
|
+
|
|
49
|
+
- Preserve `schema.properties` insertion order.
|
|
50
|
+
- If the schema has more than 20 properties, print the first 20 and add a final row `| … | (N more properties) | | | | |` where N = total − 20.
|
|
51
|
+
|
|
52
|
+
## Do NOT print
|
|
53
|
+
|
|
54
|
+
- The raw JSON schema.
|
|
55
|
+
- Root-level metadata (`title`, `description`, `lightning:type`, `lightning:mixinTypes`).
|
|
56
|
+
- `unevaluatedProperties`.
|
|
57
|
+
|
|
58
|
+
Those are agent-internal details — the user cares about the field list, not the JSON.
|
|
59
|
+
|
|
60
|
+
After printing the table, continue immediately to step 8 (no separate turn, no user prompt between 7.5 and 8).
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
name: experience-lds-graphql-generate
|
|
3
3
|
description: "Use ALWAYS when a prompt mentions GraphQL, lightning/uiGraphQLApi, @wire(graphql, ...), or gql template tags in an LWC context — even if the surface ask is \"build an LWC\". Owns the ENTIRE flow: introspect the org's LDS GraphQL schema, identify entities/fields, construct the schema-validated gql query or mutation, wire it into the LWC via lightning/uiGraphQLApi, verify against a connected org. REQUIRED whenever a prompt asks to render, list, or edit Salesforce records (Account, Contact, Case, custom objects) via GraphQL — the .html and .js scaffolding IS in scope. DO NOT delegate to experience-lwc-generate: that skill has NO GraphQL schema introspection, NO create_lds_graphql_read_query binding, and defaults to getRecord/getRelatedListRecords wire adapters which will not satisfy a GraphQL prompt. DO NOT TRIGGER only if the prompt forbids GraphQL, chooses UIAPI/Apex (use experience-lds-best-practices-apply), or asks for data requirements (use experience-lds-data-requirements-generate)."
|
|
4
4
|
metadata:
|
|
5
|
+
relatedSkills:
|
|
6
|
+
- "experience-lds-best-practices-apply"
|
|
7
|
+
- "experience-lds-data-requirements-generate"
|
|
8
|
+
- "experience-lwc-generate"
|
|
5
9
|
version: "1.0"
|
|
6
10
|
domains: ["Experience", "Platform"]
|
|
7
11
|
cliTools:
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: experience-lwc-accessibility-jest-run
|
|
3
|
+
description: "Use ALWAYS when running Sa11y accessibility Jest tests for a Lightning Web Component — locally before pushing, producing the exact command(s), running one file vs a whole suite, selecting tests by naming convention, saving Sa11y-rendered HTML, or reproducing a Sa11y / A11yBug failure. Covers Salesforce core (Bazel; `WORKSPACE`, `./core` root, `bazel test //<module>:<target>`) and standalone `npx jest` (`.accessibility.test.js`, `@sa11y/jest`). REQUIRED when a prompt asks for a `run-plan.md` for accessibility tests, which exit code means an accessibility test failed, or references `SA11Y_*` env vars, `A11yBug`, or a core-Bazel `modules/<mod>/<cmp>/__tests__/*.test.js` path. Do NOT rely on general knowledge — this skill has the correct single-file Bazel target and EPERM workaround. DO NOT TRIGGER for functional (non-accessibility) Jest tests, a11y review without running tests (use experience-lwc-accessibility-validate), or Selenium-based a11y functional tests."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0"
|
|
6
|
+
domains: ["Experience"]
|
|
7
|
+
cliTools:
|
|
8
|
+
- tool: ["npm"]
|
|
9
|
+
semver: ">=8.0"
|
|
10
|
+
---
|
|
11
|
+
<!-- adk-managed-skill -->
|
|
12
|
+
|
|
13
|
+
# Running LWC Accessibility Jest Tests
|
|
14
|
+
|
|
15
|
+
Run Sa11y accessibility unit tests on Lightning Web Components in either:
|
|
16
|
+
|
|
17
|
+
- **Core (Bazel)** — when a `WORKSPACE` file is present.
|
|
18
|
+
- **Standalone (Jest)** — when there's no `WORKSPACE`.
|
|
19
|
+
|
|
20
|
+
Selenium-level reproductions, GUS A11yBug ingestion, and other internal
|
|
21
|
+
Salesforce-only flows are out of scope for this skill. For source-code-level
|
|
22
|
+
WCAG review without running tests, see `experience-lwc-accessibility-validate`.
|
|
23
|
+
|
|
24
|
+
## When to Use This Skill
|
|
25
|
+
|
|
26
|
+
- User wants to run accessibility unit tests (Sa11y Jest) locally before
|
|
27
|
+
pushing a fix.
|
|
28
|
+
- User has a known failing test file path (e.g. from an A11yBug's
|
|
29
|
+
`Test_Names__c`) and wants to target it directly.
|
|
30
|
+
- User is iterating on an accessibility fix and needs the fastest
|
|
31
|
+
pass/fail signal.
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- For Bazel Jest tests: a Salesforce core build environment (a `WORKSPACE`
|
|
36
|
+
file is present).
|
|
37
|
+
- For standalone Jest tests: `@sa11y/jest` installed and configured.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Workflow
|
|
41
|
+
|
|
42
|
+
Follow [running-sa11y-jest-tests.md](references/running-sa11y-jest-tests.md).
|
|
43
|
+
Pick the correct mode:
|
|
44
|
+
|
|
45
|
+
- **Core (Bazel)** — use when `WORKSPACE` is present. Prefer single-file
|
|
46
|
+
targets (`//{moduleName}:{relativePath}`) over module targets when the
|
|
47
|
+
failing test file path is already known (`.test.js` extension dropped).
|
|
48
|
+
Bazel commands must pass `--test_env=SA11Y_AUTO=1
|
|
49
|
+
--test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1`; when debugging, add
|
|
50
|
+
`SA11Y_ENABLE_RENDERED_DOM_SAVE=1` with the documented save path to avoid
|
|
51
|
+
EPERM issues.
|
|
52
|
+
- **Standalone (Jest)** — use when there's no `WORKSPACE`. Run
|
|
53
|
+
`npm test -- --testMatch="**/*.accessibility.test.js"` for the whole suite,
|
|
54
|
+
or `npm test -- <file>` targeting the file by the name/path given in the
|
|
55
|
+
prompt (a **bare filename** when it is "in this directory"). Do **not**
|
|
56
|
+
prepend `SA11Y_*` env vars in standalone mode — Sa11y runs automatically
|
|
57
|
+
because `@sa11y/jest` is wired into the project's Jest setup; no extra
|
|
58
|
+
environment variables are needed.
|
|
59
|
+
|
|
60
|
+
**Answer only what is asked.** Emit just the command(s) the prompt requests plus
|
|
61
|
+
the exit-code meaning. Do not pad the plan with unrequested variants (watch,
|
|
62
|
+
coverage, verbose), snapshot-update steps, or HTML-save sections unless the user
|
|
63
|
+
explicitly asks for them.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
## Verification Checklist
|
|
67
|
+
|
|
68
|
+
- [ ] Sa11y Jest run completed with a clear pass/fail signal (exit 0 or 3
|
|
69
|
+
for Bazel; exit 0 or 1 for Jest).
|
|
70
|
+
- [ ] If snapshots were intentionally updated, the new snapshots are
|
|
71
|
+
committed alongside the fix.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Troubleshooting
|
|
75
|
+
|
|
76
|
+
- **Bazel test "not found"** — the target path is off. Remember to drop the
|
|
77
|
+
`.test.js` extension in `{relativePath}`.
|
|
78
|
+
- **HTML saving fails with EPERM** — use the prescribed save path
|
|
79
|
+
`sfdc-test/unit/javascript/htdocs/sa11y/jest`.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Sa11y Accessibility Test Instructions
|
|
2
|
+
|
|
3
|
+
## Environment Detection
|
|
4
|
+
|
|
5
|
+
Choose the approach based on your environment:
|
|
6
|
+
|
|
7
|
+
- **Core Build Environment** — contains a `WORKSPACE` file, uses Bazel build system.
|
|
8
|
+
- **Standalone Environment** — no `WORKSPACE` file, uses npm/yarn scripts.
|
|
9
|
+
|
|
10
|
+
If this is not a Salesforce core build environment, do not mention anything about the core build environment.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Core Build Environment (Bazel)
|
|
15
|
+
|
|
16
|
+
When working within a Salesforce core build environment, use Bazel commands.
|
|
17
|
+
|
|
18
|
+
### Base Command Structure
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
{coreRootPath}/tools/bazel test [TARGET] --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Replacements:**
|
|
25
|
+
|
|
26
|
+
- `{coreRootPath}` — your actual core root directory path
|
|
27
|
+
- `{moduleName}` — module name (e.g. `ui-content-authoring-components`)
|
|
28
|
+
- `{relativePath}` — test file path **without** `.test.js` extension
|
|
29
|
+
|
|
30
|
+
### Testing Approaches
|
|
31
|
+
|
|
32
|
+
#### 1. Single File Testing
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
{coreRootPath}/tools/bazel test //{moduleName}:{relativePath} --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Example:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
./core/tools/bazel test //ui-content-authoring-components:modules/es_block_builder/blockBuilder/__tests__/blockBuilder --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Use when:** testing a specific component with a known test file path.
|
|
45
|
+
|
|
46
|
+
#### 2. Module Testing
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
{coreRootPath}/tools/bazel test //{moduleName}:sa11y_jest_test --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Example:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
./core/tools/bazel test //ui-content-authoring-components:sa11y_jest_test --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Use when:** testing an entire module or when unsure which specific component to target.
|
|
59
|
+
|
|
60
|
+
#### 3. Multiple Modules
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
{coreRootPath}/tools/bazel test //{module1}:sa11y_jest_test //{module2}:sa11y_jest_test --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Use when:** integration testing across module boundaries.
|
|
67
|
+
|
|
68
|
+
#### 4. Wildcard Testing
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
{coreRootPath}/tools/bazel test //{moduleName}:sa11y_jest_test --test_arg=--testMatch="**/{modulePath}/**" --test_output=streamed --test_env=SA11Y_AUTO=1 --test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Use when:** filtering multiple components within a module by pattern.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Standalone Environment (Direct Jest)
|
|
79
|
+
|
|
80
|
+
No `SA11Y_*` environment variables are needed here — `@sa11y/jest` is wired into
|
|
81
|
+
the project's Jest setup, so the accessibility assertions run automatically.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Run all accessibility tests (match by the *.accessibility.test.js convention)
|
|
85
|
+
npm test -- --testMatch="**/*.accessibility.test.js"
|
|
86
|
+
|
|
87
|
+
# Re-run a single test file — use the filename/path as given in the prompt
|
|
88
|
+
# (a bare filename when the file is "in this directory")
|
|
89
|
+
npm test -- myComponent.accessibility.test.js
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Jest Configuration
|
|
93
|
+
|
|
94
|
+
Ensure Jest includes Sa11y setup:
|
|
95
|
+
|
|
96
|
+
```javascript
|
|
97
|
+
// jest.config.js
|
|
98
|
+
module.exports = {
|
|
99
|
+
setupFilesAfterEnv: ['<rootDir>/test/setup/sa11y-setup.js'],
|
|
100
|
+
testEnvironment: 'jsdom',
|
|
101
|
+
};
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Sa11y Setup File
|
|
105
|
+
|
|
106
|
+
```javascript
|
|
107
|
+
// test/setup/sa11y-setup.js
|
|
108
|
+
import { configure } from '@sa11y/jest';
|
|
109
|
+
|
|
110
|
+
configure({
|
|
111
|
+
rules: ['wcag2a', 'wcag2aa', 'wcag2aaa'],
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Path Discovery (Core Build Environment)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Find all test files in a module
|
|
121
|
+
find {coreRootPath}/ui-content-authoring-components -name "*.test.js" -type f
|
|
122
|
+
|
|
123
|
+
# Explore module structure
|
|
124
|
+
ls {coreRootPath}/ui-content-authoring-components/modules/
|
|
125
|
+
|
|
126
|
+
# Use Bazel to list test targets
|
|
127
|
+
{coreRootPath}/tools/bazel query "tests(//ui-content-authoring-components:*)"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Path Construction
|
|
131
|
+
|
|
132
|
+
- **Module Name** — use directly (e.g. `ui-content-authoring-components`)
|
|
133
|
+
- **Component Path** — `modules/{componentDir}/{componentName}/__tests__/`
|
|
134
|
+
- **Test File** — remove `.test.js` extension
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Optional Arguments
|
|
139
|
+
|
|
140
|
+
### Bazel Options
|
|
141
|
+
|
|
142
|
+
| Option | Command | Purpose |
|
|
143
|
+
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
|
|
144
|
+
| Update Snapshots | `--test_arg="--updateSnapshot"` | Update test snapshots |
|
|
145
|
+
| Disable Cache | `--cache_test_results=no` | Disable Bazel test caching |
|
|
146
|
+
| Save HTML Files | `--test_env=SA11Y_ENABLE_RENDERED_DOM_SAVE=1 --test_env=SA11Y_RENDERED_DOM_SAVE_PATH=sfdc-test/unit/javascript/htdocs/sa11y/jest` | Save HTML for analysis |
|
|
147
|
+
|
|
148
|
+
**Note:** Use `sfdc-test/unit/javascript/htdocs/sa11y/jest` as the save path to avoid EPERM permission issues.
|
|
149
|
+
|
|
150
|
+
**Complete example with HTML saving:**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
./core/tools/bazel test //ui-content-authoring-components:modules/es_block_builder/blockBuilder/__tests__/blockBuilder \
|
|
154
|
+
--test_output=streamed \
|
|
155
|
+
--test_env=SA11Y_AUTO=1 \
|
|
156
|
+
--test_env=SA11Y_ENABLE_DOM_MUTATION_OBSERVER=1 \
|
|
157
|
+
--test_env=SA11Y_ENABLE_RENDERED_DOM_SAVE=1 \
|
|
158
|
+
--test_env=SA11Y_RENDERED_DOM_SAVE_PATH=sfdc-test/unit/javascript/htdocs/sa11y/jest
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Jest Options
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Update snapshots
|
|
165
|
+
npm test -- --testMatch="**/*.accessibility.test.js" --updateSnapshot
|
|
166
|
+
|
|
167
|
+
# Run in watch mode
|
|
168
|
+
npm test -- --testMatch="**/*.accessibility.test.js" --watch
|
|
169
|
+
|
|
170
|
+
# Run with verbose output
|
|
171
|
+
npm test -- --testMatch="**/*.accessibility.test.js" --verbose
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Expected Exit Codes
|
|
177
|
+
|
|
178
|
+
### Bazel
|
|
179
|
+
|
|
180
|
+
- **0** — all tests passed
|
|
181
|
+
- **3** — build succeeded, some tests failed
|
|
182
|
+
- **1** — build or command failed
|
|
183
|
+
|
|
184
|
+
### Jest
|
|
185
|
+
|
|
186
|
+
- **0** — all tests passed
|
|
187
|
+
- **1** — some tests failed or error occurred
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Troubleshooting
|
|
192
|
+
|
|
193
|
+
### Bazel
|
|
194
|
+
|
|
195
|
+
- Verify `WORKSPACE` file exists
|
|
196
|
+
- Check Bazel version compatibility
|
|
197
|
+
- Ensure test targets are properly defined
|
|
198
|
+
- Verify repository-specific Bazel binary path
|
|
199
|
+
|
|
200
|
+
### Jest
|
|
201
|
+
|
|
202
|
+
- Verify Jest configuration
|
|
203
|
+
- Check test file naming conventions
|
|
204
|
+
- Ensure Sa11y dependencies are installed
|
|
205
|
+
- Verify jsdom environment setup
|
|
@@ -15,7 +15,8 @@ metadata:
|
|
|
15
15
|
- design-systems-slds-apply
|
|
16
16
|
- experience-lds-best-practices-apply
|
|
17
17
|
- experience-lds-data-requirements-generate
|
|
18
|
-
- experience-lwc-accessibility-
|
|
18
|
+
- experience-lwc-accessibility-jest-run
|
|
19
|
+
- experience-accessibility-validate
|
|
19
20
|
- experience-lwc-base-components-integrate
|
|
20
21
|
- experience-lwc-generate
|
|
21
22
|
- experience-lwc-rtl-validate
|
|
@@ -101,7 +102,7 @@ Do NOT use this skill for:
|
|
|
101
102
|
- Audit event handlers and lifecycle hook usage (`renderedCallback` guards).
|
|
102
103
|
- Consider lazy loading for heavy children.
|
|
103
104
|
2. Hand off to `experience-lwc-generate` for the LWC best-practices review pass (anti-patterns, reactivity, composition).
|
|
104
|
-
3. Hand off to the compliance suite for the pre-ship review — `experience-
|
|
105
|
+
3. Hand off to the compliance suite for the pre-ship review — `experience-accessibility-validate` (a11y), `experience-lwc-security-validate` (LWS + Product Security), and `experience-lwc-rtl-validate` (RTL i18n). Run them together for the full quality pass.
|
|
105
106
|
4. If the component touches data, hand off to `experience-lds-best-practices-apply` for cache/consistency and referential-integrity checks.
|
|
106
107
|
5. Apply every accepted finding. Keep the PRD as the source of truth — do not add scope under the guise of optimization.
|
|
107
108
|
|
|
@@ -153,7 +154,7 @@ A new component built from this workflow is "done" only when **every** item belo
|
|
|
153
154
|
|
|
154
155
|
5. `.js-meta.xml` AI metadata passes the audit in `experience-lwc-generate` (component-wide `<ai><description>` set, plus an `<ai><property name="…" aiDescription="…"/></ai>` entry for every `@api` member exposed through `<targetConfig>`; no marketing language).
|
|
155
156
|
6. SLDS styling passes `design-systems-slds-apply` verification — no raw hex / px values, only styling hooks and SLDS utility classes.
|
|
156
|
-
7. Accessibility pass complete: `experience-
|
|
157
|
+
7. Accessibility pass complete: `experience-accessibility-validate` for source review + `experience-lwc-accessibility-jest-run` for automated tests, both green.
|
|
157
158
|
8. Security + RTL pass complete: `experience-lwc-security-validate` + `experience-lwc-rtl-validate`, both green.
|
|
158
159
|
|
|
159
160
|
**Data + tests:**
|
|
@@ -169,7 +170,7 @@ A new component built from this workflow is "done" only when **every** item belo
|
|
|
169
170
|
- `design-systems-slds-apply`, `experience-lwc-base-components-integrate` — Phase 2 styling decisions.
|
|
170
171
|
- `experience-lwc-generate` — Phase 2 authoring baseline + Phase 3 best-practices review + Phase 5 AI-metadata audit.
|
|
171
172
|
- `experience-lds-best-practices-apply` — Phase 2/3 data-layer adapter selection and consistency review.
|
|
172
|
-
- `experience-
|
|
173
|
+
- `experience-accessibility-validate`, `experience-lwc-security-validate`, `experience-lwc-rtl-validate` — Phase 3 a11y/security/RTL review.
|
|
173
174
|
- `experience-lwc-accessibility-jest-run` — Phase 5 automated a11y test generation.
|
|
174
175
|
- Optional: add o11y instrumentation as a separate pass once the component stabilizes.
|
|
175
176
|
- `experience-lwc-typescript-migrate` — optional once JS is green.
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
name: experience-lwc-generate
|
|
3
3
|
description: "Lightning Web Components with PICKLES methodology and 165-point scoring. Use this skill when the user creates or edits LWC components, builds wire service patterns, or writes Jest tests for LWC. TRIGGER when: user creates/edits LWC components, touches lwc/**/*.js, .html, .css, .js-meta.xml files, or asks about wire service, SLDS, or Jest LWC tests. DO NOT TRIGGER when: Apex classes (use platform-apex-generate), Aura components, or Visualforce."
|
|
4
4
|
metadata:
|
|
5
|
+
version: "1.1"
|
|
6
|
+
domains: ["Experience"]
|
|
7
|
+
minApiVersion: "66.0"
|
|
8
|
+
relatedSkills:
|
|
9
|
+
- "agentforce-generate"
|
|
10
|
+
- "automation-flow-generate"
|
|
11
|
+
- "integration-connectivity-generate"
|
|
12
|
+
- "platform-apex-generate"
|
|
13
|
+
- "platform-apex-test-run"
|
|
14
|
+
- "platform-metadata-deploy"
|
|
5
15
|
cliTools:
|
|
6
16
|
- tool: ["node"]
|
|
7
17
|
semver: ">=18.0.0"
|
|
@@ -13,15 +23,6 @@ metadata:
|
|
|
13
23
|
semver: ">=3.9.0"
|
|
14
24
|
- tool: ["sf"]
|
|
15
25
|
semver: ">=2.0.0"
|
|
16
|
-
relatedSkills:
|
|
17
|
-
- "agentforce-generate"
|
|
18
|
-
- "automation-flow-generate"
|
|
19
|
-
- "integration-connectivity-generate"
|
|
20
|
-
- "platform-apex-generate"
|
|
21
|
-
- "platform-apex-test-run"
|
|
22
|
-
- "platform-metadata-deploy"
|
|
23
|
-
version: "1.1"
|
|
24
|
-
domains: ["Experience"]
|
|
25
26
|
---
|
|
26
27
|
|
|
27
28
|
# experience-lwc-generate: Lightning Web Components Development
|
|
@@ -34,6 +34,27 @@ Run it from the **project root** (the `npm` script `cd`s into the bundle itself)
|
|
|
34
34
|
6. `npm run dev` — launch the Vite dev server. **Blocking** — it runs until the
|
|
35
35
|
user stops it with Ctrl+C.
|
|
36
36
|
|
|
37
|
+
## Local preview limitations
|
|
38
|
+
|
|
39
|
+
`npm run dev:preview` runs the app in the Vite dev server with `sdk.fetch` proxied
|
|
40
|
+
to the org **outside the Experience site's guest/community context**. Some auth
|
|
41
|
+
surfaces therefore **cannot be exercised locally** — this is expected, not a
|
|
42
|
+
misconfiguration:
|
|
43
|
+
|
|
44
|
+
- **Social Login buttons do not render.** The built-in Social Login component calls
|
|
45
|
+
`/auth/social-login-config`, which returns no providers because `Site.getBaseUrl()`
|
|
46
|
+
is blank outside the site context — even when providers are correctly linked
|
|
47
|
+
(SKILL.md step 6b). The Social Login section simply renders nothing.
|
|
48
|
+
- **Password / MFA login does not complete.** `Site.login()` cannot establish the
|
|
49
|
+
site session, so login returns *"Your login attempt has failed…"* and any MFA
|
|
50
|
+
challenge never renders.
|
|
51
|
+
|
|
52
|
+
Test social login and MFA on the **published** site login page
|
|
53
|
+
(`https://<domain>.site.com/<site-path>/login`), not on `localhost`.
|
|
54
|
+
|
|
55
|
+
`npm run dev:preview` prints this same warning to the CLI just before it launches
|
|
56
|
+
the dev server, so the limitation is visible even without reading this reference.
|
|
57
|
+
|
|
37
58
|
## When to use it vs. the setup GraphQL step
|
|
38
59
|
|
|
39
60
|
- **Setup step 8** (`references/graphql.md`) refreshes schema/types and then
|
|
@@ -177,3 +177,4 @@ sf data create record --target-org <org> --sobject PermissionSetAssignment \
|
|
|
177
177
|
| SSO user: `NO_ACCESS: User was not authorized for the community` | `communityMemberProfile` not in `NetworkMemberGroup` | Ensure sub-step 3 ran (profile added to member groups) |
|
|
178
178
|
| SSO user insert fails with `FIELD_INTEGRITY_EXCEPTION` | "Allow standard external profiles" org setting off | Ensure sub-step 1 ran (`enableExternalProfiles`) |
|
|
179
179
|
| `getCurrentUser()` / `/chatter/users/me` fails for SSO users | Community profile lacks `ApiEnabled` | Set `communityUserPermset` so sub-step 4 assigns API access |
|
|
180
|
+
| No social-login buttons in local dev preview (`npm run dev:preview`) even when providers are correctly linked | Local preview runs outside the Experience site guest context, so `/auth/social-login-config` returns no providers (`Site.getBaseUrl()` is blank) | Expected — not a misconfig. Verify on the **published** site login page, not `localhost`. |
|
|
@@ -396,9 +396,9 @@ The package includes a reference implementation in `src/features/fileupload/` wi
|
|
|
396
396
|
|
|
397
397
|
## DO NOT do these things
|
|
398
398
|
|
|
399
|
-
-
|
|
400
|
-
-
|
|
401
|
-
-
|
|
402
|
-
-
|
|
403
|
-
-
|
|
404
|
-
-
|
|
399
|
+
- Build XHR/fetch upload logic from scratch — use the `upload()` API
|
|
400
|
+
- Try to import `<FileUpload />` component — it's not exported
|
|
401
|
+
- Try to import `useFileUpload` hook — it's not exported
|
|
402
|
+
- Use third-party file upload libraries when this feature exists
|
|
403
|
+
- Skip progress tracking — always provide user feedback
|
|
404
|
+
- Ignore errors — always handle and display error messages
|