@salesforce/afv-skills 1.8.0 → 1.9.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/activating-datacloud/CREDITS.md +5 -0
- package/skills/activating-datacloud/README.md +39 -0
- package/skills/activating-datacloud/SKILL.md +118 -0
- package/skills/analyzing-omnistudio-dependencies/CREDITS.md +5 -0
- package/skills/analyzing-omnistudio-dependencies/SKILL.md +477 -0
- package/skills/analyzing-omnistudio-dependencies/references/dependency-patterns.md +508 -0
- package/skills/analyzing-omnistudio-dependencies/references/namespace-guide.md +300 -0
- package/skills/building-omnistudio-callable-apex/CREDITS.md +9 -0
- package/skills/building-omnistudio-callable-apex/README.md +80 -0
- package/skills/building-omnistudio-callable-apex/SKILL.md +276 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_openinterface.cls +40 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_callable_vanilla.cls +32 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_migration.cls +54 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_openinterface.cls +45 -0
- package/skills/building-omnistudio-callable-apex/assets/pattern_test_class.cls +65 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallable.cls +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/Industries_QuoteByProductCallableTest.cls +189 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_QuoteByProductCallable/TRANSCRIPT.md +115 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallable.cls +74 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomCallableTest.cls +146 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/MyCustomRemoteClass.cls +16 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterface2Conversion/TRANSCRIPT.md +120 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/IndustriesCallableException.cls +7 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallable.cls +73 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomCallableTest.cls +128 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/MyCustomVlocityOpenInterface2.cls +23 -0
- package/skills/building-omnistudio-callable-apex/examples/Test_VlocityOpenInterfaceConversion/TRANSCRIPT.md +75 -0
- package/skills/building-omnistudio-datamapper/CREDITS.md +5 -0
- package/skills/building-omnistudio-datamapper/SKILL.md +270 -0
- package/skills/building-omnistudio-datamapper/assets/completion-summary-template.md +28 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-extract.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-item.json +12 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-load.json +6 -0
- package/skills/building-omnistudio-datamapper/assets/omni-data-transform-transform.json +6 -0
- package/skills/building-omnistudio-datamapper/references/best-practices.md +277 -0
- package/skills/building-omnistudio-datamapper/references/naming-conventions.md +145 -0
- package/skills/building-omnistudio-flexcard/CREDITS.md +5 -0
- package/skills/building-omnistudio-flexcard/SKILL.md +325 -0
- package/skills/building-omnistudio-flexcard/assets/omni-ui-card.json +10 -0
- package/skills/building-omnistudio-flexcard/references/best-practices.md +291 -0
- package/skills/building-omnistudio-flexcard/references/data-binding-guide.md +311 -0
- package/skills/building-omnistudio-flexcard/references/scoring-rubric.md +66 -0
- package/skills/building-omnistudio-flexcard/scripts/flexcard-commands.sh +24 -0
- package/skills/building-omnistudio-integration-procedure/CREDITS.md +5 -0
- package/skills/building-omnistudio-integration-procedure/SKILL.md +275 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-dr-extract.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-element-set-values.json +10 -0
- package/skills/building-omnistudio-integration-procedure/assets/omni-process-ip.json +12 -0
- package/skills/building-omnistudio-integration-procedure/assets/scoring-report-format.txt +14 -0
- package/skills/building-omnistudio-integration-procedure/references/best-practices.md +388 -0
- package/skills/building-omnistudio-integration-procedure/references/element-types.md +588 -0
- package/skills/building-omnistudio-integration-procedure/scripts/cli-commands.sh +18 -0
- package/skills/building-omnistudio-omniscript/CREDITS.md +5 -0
- package/skills/building-omnistudio-omniscript/SKILL.md +367 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-step.json +10 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-element-text-block.json +11 -0
- package/skills/building-omnistudio-omniscript/assets/omni-process-omniscript.json +12 -0
- package/skills/building-omnistudio-omniscript/references/best-practices.md +480 -0
- package/skills/building-omnistudio-omniscript/references/element-types.md +1172 -0
- package/skills/building-omnistudio-omniscript/scripts/check-duplicate-omniscript.sh +13 -0
- package/skills/building-omnistudio-omniscript/scripts/cli-reference.sh +21 -0
- package/skills/building-omnistudio-omniscript/scripts/deploy-omniscript.sh +29 -0
- package/skills/building-sf-integrations/CREDITS.md +5 -0
- package/skills/building-sf-integrations/README.md +95 -0
- package/skills/building-sf-integrations/SKILL.md +192 -0
- package/skills/building-sf-integrations/assets/callouts/callout-retry-handler.cls +167 -0
- package/skills/building-sf-integrations/assets/callouts/http-response-handler.cls +257 -0
- package/skills/building-sf-integrations/assets/callouts/rest-queueable-callout.cls +262 -0
- package/skills/building-sf-integrations/assets/callouts/rest-sync-callout.cls +211 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-handler.cls +246 -0
- package/skills/building-sf-integrations/assets/cdc/cdc-subscriber-trigger.trigger +139 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.cspTrustedSite-meta.xml +58 -0
- package/skills/building-sf-integrations/assets/endpoint-security/example.remoteSite-meta.xml +39 -0
- package/skills/building-sf-integrations/assets/external-credentials/jwt-external-credential.externalCredential-meta.xml +90 -0
- package/skills/building-sf-integrations/assets/external-credentials/oauth-external-credential.externalCredential-meta.xml +87 -0
- package/skills/building-sf-integrations/assets/external-services/external-service-operations.md +221 -0
- package/skills/building-sf-integrations/assets/external-services/openapi-registration.externalServiceRegistration-meta.xml +193 -0
- package/skills/building-sf-integrations/assets/named-credentials/certificate-auth.namedCredential-meta.xml +62 -0
- package/skills/building-sf-integrations/assets/named-credentials/custom-auth.namedCredential-meta.xml +71 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-client-credentials.namedCredential-meta.xml +51 -0
- package/skills/building-sf-integrations/assets/named-credentials/oauth-jwt-bearer.namedCredential-meta.xml +67 -0
- package/skills/building-sf-integrations/assets/platform-events/event-publisher.cls +191 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-action.cls +295 -0
- package/skills/building-sf-integrations/assets/platform-events/event-subscriber-trigger.trigger +108 -0
- package/skills/building-sf-integrations/assets/platform-events/platform-event-definition.object-meta.xml +124 -0
- package/skills/building-sf-integrations/assets/soap/soap-callout-service.cls +186 -0
- package/skills/building-sf-integrations/assets/soap/wsdl2apex-guide.md +213 -0
- package/skills/building-sf-integrations/hooks/scripts/suggest_credential_setup.py +271 -0
- package/skills/building-sf-integrations/hooks/scripts/validate_integration.py +363 -0
- package/skills/building-sf-integrations/references/callout-patterns.md +719 -0
- package/skills/building-sf-integrations/references/cdc-guide.md +288 -0
- package/skills/building-sf-integrations/references/cli-reference.md +94 -0
- package/skills/building-sf-integrations/references/event-driven-architecture-guide.md +266 -0
- package/skills/building-sf-integrations/references/event-patterns.md +838 -0
- package/skills/building-sf-integrations/references/external-services-guide.md +303 -0
- package/skills/building-sf-integrations/references/messaging-api-v2.md +609 -0
- package/skills/building-sf-integrations/references/named-credentials-automation.md +201 -0
- package/skills/building-sf-integrations/references/named-credentials-guide.md +173 -0
- package/skills/building-sf-integrations/references/platform-events-guide.md +288 -0
- package/skills/building-sf-integrations/references/rest-callout-patterns.md +288 -0
- package/skills/building-sf-integrations/references/scoring-rubric.md +59 -0
- package/skills/building-sf-integrations/references/security-best-practices.md +248 -0
- package/skills/building-sf-integrations/scripts/README.md +100 -0
- package/skills/building-sf-integrations/scripts/configure-named-credential.sh +236 -0
- package/skills/building-sf-integrations/scripts/set-api-credential.sh +146 -0
- package/skills/building-sf-integrations/scripts/templates/setup-credentials-with-csp.sh +158 -0
- package/skills/configuring-connected-apps/CREDITS.md +3 -0
- package/skills/configuring-connected-apps/README.md +99 -0
- package/skills/configuring-connected-apps/SKILL.md +224 -0
- package/skills/configuring-connected-apps/assets/connected-app-basic.xml +29 -0
- package/skills/configuring-connected-apps/assets/connected-app-canvas.xml +62 -0
- package/skills/configuring-connected-apps/assets/connected-app-jwt.xml +49 -0
- package/skills/configuring-connected-apps/assets/connected-app-oauth.xml +65 -0
- package/skills/configuring-connected-apps/assets/eca-global-oauth.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-oauth-settings.xml +36 -0
- package/skills/configuring-connected-apps/assets/eca-policies.xml +36 -0
- package/skills/configuring-connected-apps/assets/external-client-app.xml +35 -0
- package/skills/configuring-connected-apps/references/example-usage.md +256 -0
- package/skills/configuring-connected-apps/references/migration-guide.md +328 -0
- package/skills/configuring-connected-apps/references/oauth-flows-reference.md +660 -0
- package/skills/configuring-connected-apps/references/security-checklist.md +209 -0
- package/skills/configuring-connected-apps/references/testing-validation-guide.md +275 -0
- package/skills/connecting-datacloud/CREDITS.md +5 -0
- package/skills/connecting-datacloud/README.md +59 -0
- package/skills/connecting-datacloud/SKILL.md +155 -0
- package/skills/connecting-datacloud/examples/connections/heroku-postgres.json +15 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-connection.json +5 -0
- package/skills/connecting-datacloud/examples/connections/ingest-api-schema.json +31 -0
- package/skills/connecting-datacloud/examples/connections/redshift.json +16 -0
- package/skills/connecting-datacloud/examples/connections/sharepoint-unstructured.json +20 -0
- package/skills/connecting-datacloud/examples/connections/snowflake-connection.json +42 -0
- package/skills/debugging-apex-logs/CREDITS.md +22 -0
- package/skills/debugging-apex-logs/README.md +74 -0
- package/skills/debugging-apex-logs/SKILL.md +172 -0
- package/skills/debugging-apex-logs/assets/benchmarking-template.cls +327 -0
- package/skills/debugging-apex-logs/assets/cpu-heap-optimization.cls +307 -0
- package/skills/debugging-apex-logs/assets/dml-in-loop-fix.cls +219 -0
- package/skills/debugging-apex-logs/assets/null-pointer-fix.cls +252 -0
- package/skills/debugging-apex-logs/assets/soql-in-loop-fix.cls +157 -0
- package/skills/debugging-apex-logs/references/analysis-playbook.md +53 -0
- package/skills/debugging-apex-logs/references/benchmarking-guide.md +287 -0
- package/skills/debugging-apex-logs/references/cli-commands.md +368 -0
- package/skills/debugging-apex-logs/references/common-issues.md +68 -0
- package/skills/debugging-apex-logs/references/debug-log-reference.md +328 -0
- package/skills/debugging-apex-logs/references/log-analysis-tools.md +248 -0
- package/skills/debugging-apex-logs/references/scoring-rubric.md +21 -0
- package/skills/deploying-metadata/CREDITS.md +25 -0
- package/skills/deploying-metadata/README.md +104 -0
- package/skills/deploying-metadata/SKILL.md +214 -0
- package/skills/deploying-metadata/assets/destructiveChanges.xml +143 -0
- package/skills/deploying-metadata/assets/package.xml +121 -0
- package/skills/deploying-metadata/references/agent-deployment-guide.md +628 -0
- package/skills/deploying-metadata/references/deploy.sh +73 -0
- package/skills/deploying-metadata/references/deployment-report-template.md +89 -0
- package/skills/deploying-metadata/references/deployment-workflows.md +395 -0
- package/skills/deploying-metadata/references/orchestration.md +183 -0
- package/skills/deploying-metadata/references/trigger-deployment-safety.md +376 -0
- package/skills/deploying-omnistudio-datapacks/CREDITS.md +5 -0
- package/skills/deploying-omnistudio-datapacks/README.md +88 -0
- package/skills/deploying-omnistudio-datapacks/SKILL.md +174 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/TRANSCRIPT.md +124 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle/deploy-business-internet-plus-bundle.yaml +11 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/TRANSCRIPT.md +142 -0
- package/skills/deploying-omnistudio-datapacks/examples/business-internet-plus-bundle-deploy/deploy-business-internet-plus-bundle.yaml +10 -0
- package/skills/deploying-omnistudio-datapacks/references/job-file-template.md +42 -0
- package/skills/deploying-omnistudio-datapacks/references/troubleshooting-matrix.md +24 -0
- package/skills/developing-agentforce/assets/metadata/http-callout-flow.flow-meta.xml +1 -1
- package/skills/developing-agentforce/references/actions-reference.md +8 -8
- package/skills/fetching-salesforce-docs/README.md +66 -0
- package/skills/fetching-salesforce-docs/SKILL.md +209 -0
- package/skills/fetching-salesforce-docs/requirements.txt +2 -0
- package/skills/fetching-salesforce-docs/scripts/extract_help_salesforce.py +497 -0
- package/skills/fetching-salesforce-docs/scripts/extract_salesforce_doc.py +357 -0
- package/skills/fetching-salesforce-docs/scripts/runtime_bootstrap.py +58 -0
- package/skills/generating-apex/CREDITS.md +1 -26
- package/skills/generating-apex-test/CREDITS.md +2 -27
- package/skills/generating-lwc-components/CREDITS.md +5 -0
- package/skills/generating-lwc-components/README.md +126 -0
- package/skills/generating-lwc-components/SKILL.md +191 -0
- package/skills/generating-lwc-components/assets/apex-controller/LwcController.cls +327 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.css +72 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.html +111 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js +163 -0
- package/skills/generating-lwc-components/assets/basic-component/basicComponent.js-meta.xml +137 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.html +111 -0
- package/skills/generating-lwc-components/assets/datatable-component/datatableComponent.js +367 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.css +63 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.html +154 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js +348 -0
- package/skills/generating-lwc-components/assets/flow-screen-component/flowScreenComponent.js-meta.xml +87 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.html +165 -0
- package/skills/generating-lwc-components/assets/form-component/formComponent.js +275 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.html +100 -0
- package/skills/generating-lwc-components/assets/graphql-component/graphqlComponent.js +336 -0
- package/skills/generating-lwc-components/assets/jest-test/componentName.test.js.example +371 -0
- package/skills/generating-lwc-components/assets/message-channel/RecordSelected.messageChannel-meta.xml +71 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsPublisher.js +103 -0
- package/skills/generating-lwc-components/assets/message-channel/lmsSubscriber.js +181 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.html +85 -0
- package/skills/generating-lwc-components/assets/modal-component/modalComponent.js +199 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.html +55 -0
- package/skills/generating-lwc-components/assets/record-picker/recordPicker.js +199 -0
- package/skills/generating-lwc-components/assets/state-store/store.js +282 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.css +65 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.html +95 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.js-meta.xml +75 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.test.ts.example +301 -0
- package/skills/generating-lwc-components/assets/typescript-component/typescriptComponent.ts +295 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.html +71 -0
- package/skills/generating-lwc-components/assets/workspace-api/workspaceComponent.js +316 -0
- package/skills/generating-lwc-components/hooks/scripts/lwc-lsp-validate.py +295 -0
- package/skills/generating-lwc-components/hooks/scripts/post-tool-validate.py +347 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/deprecated_patterns.json +74 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/styling_hooks.json +111 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_data/valid_slds_classes.json +127 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_linter_wrapper.py +294 -0
- package/skills/generating-lwc-components/hooks/scripts/slds_rules/__init__.py +22 -0
- package/skills/generating-lwc-components/hooks/scripts/template_validator.py +332 -0
- package/skills/generating-lwc-components/hooks/scripts/validate_slds.py +595 -0
- package/skills/generating-lwc-components/references/accessibility-guide.md +843 -0
- package/skills/generating-lwc-components/references/advanced-features.md +108 -0
- package/skills/generating-lwc-components/references/async-notification-patterns.md +661 -0
- package/skills/generating-lwc-components/references/cli-commands.md +545 -0
- package/skills/generating-lwc-components/references/component-patterns.md +1476 -0
- package/skills/generating-lwc-components/references/flow-integration-guide.md +675 -0
- package/skills/generating-lwc-components/references/jest-testing.md +1011 -0
- package/skills/generating-lwc-components/references/lms-guide.md +860 -0
- package/skills/generating-lwc-components/references/lwc-best-practices.md +1310 -0
- package/skills/generating-lwc-components/references/performance-guide.md +861 -0
- package/skills/generating-lwc-components/references/scoring-and-testing.md +116 -0
- package/skills/generating-lwc-components/references/slds-blueprints.json +14389 -0
- package/skills/generating-lwc-components/references/slds-design-guide.md +166 -0
- package/skills/generating-lwc-components/references/state-management.md +642 -0
- package/skills/generating-lwc-components/references/template-anti-patterns.md +948 -0
- package/skills/generating-lwc-components/references/triangle-pattern.md +365 -0
- package/skills/generating-lwc-components/scripts/local-dev-preview.sh +34 -0
- package/skills/generating-mermaid-diagrams/CREDITS.md +46 -0
- package/skills/generating-mermaid-diagrams/README.md +114 -0
- package/skills/generating-mermaid-diagrams/SKILL.md +218 -0
- package/skills/generating-mermaid-diagrams/assets/agentforce/agent-flow.md +313 -0
- package/skills/generating-mermaid-diagrams/assets/architecture/system-landscape.md +351 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/b2b-commerce-erd.md +317 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/campaigns-erd.md +195 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/consent-erd.md +262 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/files-erd.md +266 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/forecasting-erd.md +261 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/fsl-erd.md +332 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/party-model-erd.md +237 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/quote-order-erd.md +277 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/revenue-cloud-erd.md +343 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/sales-cloud-erd.md +192 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/salesforce-erd.md +209 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/scheduler-erd.md +276 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/service-cloud-erd.md +217 -0
- package/skills/generating-mermaid-diagrams/assets/datamodel/territory-management-erd.md +241 -0
- package/skills/generating-mermaid-diagrams/assets/integration/api-sequence.md +387 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code-pkce.md +197 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/authorization-code.md +152 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/client-credentials.md +233 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/device-authorization.md +295 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/jwt-bearer.md +256 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/refresh-token.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/oauth/user-agent-social-sign-on.md +281 -0
- package/skills/generating-mermaid-diagrams/assets/role-hierarchy/user-hierarchy.md +322 -0
- package/skills/generating-mermaid-diagrams/references/color-palette.md +464 -0
- package/skills/generating-mermaid-diagrams/references/diagram-conventions.md +313 -0
- package/skills/generating-mermaid-diagrams/references/erd-conventions.md +320 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-reference.md +434 -0
- package/skills/generating-mermaid-diagrams/references/mermaid-styling.md +81 -0
- package/skills/generating-mermaid-diagrams/references/preview-guide.md +49 -0
- package/skills/generating-mermaid-diagrams/references/usage-examples.md +340 -0
- package/skills/generating-mermaid-diagrams/scripts/README.md +160 -0
- package/skills/generating-mermaid-diagrams/scripts/mermaid_preview.py +654 -0
- package/skills/generating-mermaid-diagrams/scripts/query-org-metadata.py +293 -0
- package/skills/generating-visual-diagrams/CREDITS.md +80 -0
- package/skills/generating-visual-diagrams/README.md +83 -0
- package/skills/generating-visual-diagrams/SKILL.md +208 -0
- package/skills/generating-visual-diagrams/assets/architecture/integration-flow.md +55 -0
- package/skills/generating-visual-diagrams/assets/erd/core-objects.md +131 -0
- package/skills/generating-visual-diagrams/assets/erd/custom-objects.md +60 -0
- package/skills/generating-visual-diagrams/assets/lwc/dashboard-card.md +45 -0
- package/skills/generating-visual-diagrams/assets/lwc/data-table.md +57 -0
- package/skills/generating-visual-diagrams/assets/lwc/record-form.md +60 -0
- package/skills/generating-visual-diagrams/assets/review/apex-review.md +57 -0
- package/skills/generating-visual-diagrams/assets/review/lwc-review.md +48 -0
- package/skills/generating-visual-diagrams/references/architect-aesthetic-guide.md +257 -0
- package/skills/generating-visual-diagrams/references/examples-index.md +35 -0
- package/skills/generating-visual-diagrams/references/gemini-cli-setup.md +65 -0
- package/skills/generating-visual-diagrams/references/interview-questions.md +529 -0
- package/skills/generating-visual-diagrams/references/iteration-workflow.md +173 -0
- package/skills/generating-visual-diagrams/scripts/check-prerequisites.sh +101 -0
- package/skills/generating-visual-diagrams/scripts/generate_image.py +243 -0
- package/skills/handling-sf-data/CREDITS.md +5 -0
- package/skills/handling-sf-data/README.md +112 -0
- package/skills/handling-sf-data/SKILL.md +235 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-10000.apex +293 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-200.apex +208 -0
- package/skills/handling-sf-data/assets/bulk/bulk-insert-500.apex +219 -0
- package/skills/handling-sf-data/assets/bulk/bulk-upsert-external-id.apex +324 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-created-date.apex +319 -0
- package/skills/handling-sf-data/assets/cleanup/delete-by-name.apex +240 -0
- package/skills/handling-sf-data/assets/cleanup/delete-test-data.apex +311 -0
- package/skills/handling-sf-data/assets/cleanup/rollback-transaction.apex +266 -0
- package/skills/handling-sf-data/assets/csv/account-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/contact-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/custom-object-import.csv +11 -0
- package/skills/handling-sf-data/assets/csv/opportunity-import.csv +11 -0
- package/skills/handling-sf-data/assets/factories/account-factory.apex +165 -0
- package/skills/handling-sf-data/assets/factories/case-factory.apex +237 -0
- package/skills/handling-sf-data/assets/factories/contact-factory.apex +168 -0
- package/skills/handling-sf-data/assets/factories/custom-object-factory.apex +260 -0
- package/skills/handling-sf-data/assets/factories/event-factory.apex +275 -0
- package/skills/handling-sf-data/assets/factories/hierarchy-factory.apex +372 -0
- package/skills/handling-sf-data/assets/factories/lead-factory.apex +190 -0
- package/skills/handling-sf-data/assets/factories/opportunity-factory.apex +206 -0
- package/skills/handling-sf-data/assets/factories/task-factory.apex +246 -0
- package/skills/handling-sf-data/assets/factories/user-factory.apex +278 -0
- package/skills/handling-sf-data/assets/json/account-contact-tree.json +130 -0
- package/skills/handling-sf-data/assets/json/account-opportunity-tree.json +110 -0
- package/skills/handling-sf-data/assets/json/full-hierarchy-tree.json +188 -0
- package/skills/handling-sf-data/assets/soql/aggregate.soql +226 -0
- package/skills/handling-sf-data/assets/soql/child-to-parent.soql +162 -0
- package/skills/handling-sf-data/assets/soql/parent-to-child.soql +153 -0
- package/skills/handling-sf-data/assets/soql/polymorphic.soql +198 -0
- package/skills/handling-sf-data/assets/soql/subquery.soql +287 -0
- package/skills/handling-sf-data/references/anonymous-apex-guide.md +98 -0
- package/skills/handling-sf-data/references/bulk-operations-guide.md +94 -0
- package/skills/handling-sf-data/references/bulk-testing-example.md +194 -0
- package/skills/handling-sf-data/references/cleanup-rollback-example.md +322 -0
- package/skills/handling-sf-data/references/cleanup-rollback-guide.md +84 -0
- package/skills/handling-sf-data/references/crud-workflow-example.md +183 -0
- package/skills/handling-sf-data/references/governor-limits-reference.md +74 -0
- package/skills/handling-sf-data/references/orchestration.md +174 -0
- package/skills/handling-sf-data/references/relationship-query-examples.md +249 -0
- package/skills/handling-sf-data/references/sf-cli-data-commands.md +158 -0
- package/skills/handling-sf-data/references/soql-relationship-guide.md +84 -0
- package/skills/handling-sf-data/references/test-data-best-practices.md +104 -0
- package/skills/handling-sf-data/references/test-data-factory-usage.md +290 -0
- package/skills/handling-sf-data/references/test-data-patterns.md +98 -0
- package/skills/handling-sf-data/scripts/soql_validator.py +292 -0
- package/skills/handling-sf-data/scripts/validate_data_operation.py +379 -0
- package/skills/harmonizing-datacloud/CREDITS.md +3 -0
- package/skills/harmonizing-datacloud/README.md +31 -0
- package/skills/harmonizing-datacloud/SKILL.md +117 -0
- package/skills/modeling-omnistudio-epc-catalog/CREDITS.md +14 -0
- package/skills/modeling-omnistudio-epc-catalog/README.md +89 -0
- package/skills/modeling-omnistudio-epc-catalog/SKILL.md +395 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/attribute-assignment-template.json +402 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/compiled-attribute-overrides-template.json +43 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/completion-block-template.txt +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/decomposition-relationships-template.json +233 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_AttributeAssignments.json +514 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DataPack.json +649 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_DecompositionRelationships.json +200 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OrchestrationScenarios.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_OverrideDefinitions.json +266 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json +21 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_AttributeAssignments.json +410 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DataPack.json +535 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ObjectFieldAttributes.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ParentKeys.json +23 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PriceListEntries.json +220 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/business-internet-pro-vpl-simple-offer/Business-Internet-Pro-VPL_ProductChildItems.json +414 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_AttributeAssignments.json +382 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DataPack.json +565 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json +104 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PriceListEntries.json +106 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/samsung-galaxy-s22-bundle/Samsung-Galaxy-S22-Bundle_ProductChildItems.json +72 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_AttributeAssignments.json +142 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DataPack.json +377 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_DecompositionRelationships.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ObjectFieldAttributes.json +36 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ParentKeys.json +8 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PriceListEntries.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_PricebookEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/examples/static-ip-simple-offer/Static-IP_ProductChildItems.json +34 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/object-field-attributes-template.json +138 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/orchestration-scenarios-template.json +54 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/override-definitions-template.json +134 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/parent-keys-template.json +29 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/price-list-entries-template.json +158 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/pricebook-entries-template.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product-child-item-template.json +338 -0
- package/skills/modeling-omnistudio-epc-catalog/assets/product2-offer-template.json +527 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/.gitkeep +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_AttributeAssignments.json +95 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_CompiledAttributeOverrides.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DataPack.json +214 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_DecompositionRelationships.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ObjectFieldAttributes.json +98 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OrchestrationScenarios.json +22 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_OverrideDefinitions.json +1 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ParentKeys.json +13 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PriceListEntries.json +35 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_PricebookEntries.json +28 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/Business-Internet-Plus_ProductChildItems.json +110 -0
- package/skills/modeling-omnistudio-epc-catalog/examples/business-internet-plus-bundle/TRANSCRIPT.md +58 -0
- package/skills/modeling-omnistudio-epc-catalog/references/epc-field-guide.md +90 -0
- package/skills/modeling-omnistudio-epc-catalog/references/naming-conventions.md +80 -0
- package/skills/modeling-omnistudio-epc-catalog/references/scoring-model.md +57 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/cli-validation-commands.sh +19 -0
- package/skills/modeling-omnistudio-epc-catalog/scripts/sample-invocations.sh +18 -0
- package/skills/orchestrating-datacloud/CREDITS.md +15 -0
- package/skills/orchestrating-datacloud/README.md +129 -0
- package/skills/orchestrating-datacloud/SKILL.md +236 -0
- package/skills/orchestrating-datacloud/UPSTREAM.md +45 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/activation.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/calculated-insight.template.json +7 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action-target.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-action.template.json +5 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-graph.template.json +21 -0
- package/skills/orchestrating-datacloud/assets/definitions/data-stream.template.json +55 -0
- package/skills/orchestrating-datacloud/assets/definitions/dmo.template.json +17 -0
- package/skills/orchestrating-datacloud/assets/definitions/identity-resolution.template.json +30 -0
- package/skills/orchestrating-datacloud/assets/definitions/mapping.template.json +14 -0
- package/skills/orchestrating-datacloud/assets/definitions/relationship.template.json +12 -0
- package/skills/orchestrating-datacloud/assets/definitions/search-index.template.json +9 -0
- package/skills/orchestrating-datacloud/assets/definitions/segment.template.json +16 -0
- package/skills/orchestrating-datacloud/references/feature-readiness.md +157 -0
- package/skills/orchestrating-datacloud/references/plugin-setup.md +140 -0
- package/skills/orchestrating-datacloud/scripts/bootstrap-plugin.sh +53 -0
- package/skills/orchestrating-datacloud/scripts/diagnose-org.mjs +511 -0
- package/skills/orchestrating-datacloud/scripts/generate-manifest.mjs +68 -0
- package/skills/orchestrating-datacloud/scripts/verify-plugin.sh +58 -0
- package/skills/preparing-datacloud/CREDITS.md +7 -0
- package/skills/preparing-datacloud/README.md +51 -0
- package/skills/preparing-datacloud/SKILL.md +191 -0
- package/skills/preparing-datacloud/examples/ingestion-api/.env.example +8 -0
- package/skills/preparing-datacloud/examples/ingestion-api/README.md +48 -0
- package/skills/preparing-datacloud/examples/ingestion-api/send-data.py +144 -0
- package/skills/querying-soql/CREDITS.md +21 -0
- package/skills/querying-soql/README.md +41 -0
- package/skills/querying-soql/SKILL.md +143 -0
- package/skills/querying-soql/assets/aggregate-queries.soql +242 -0
- package/skills/querying-soql/assets/basic-queries.soql +188 -0
- package/skills/querying-soql/assets/bulkified-query-pattern.cls +280 -0
- package/skills/querying-soql/assets/optimization-patterns.soql +259 -0
- package/skills/querying-soql/assets/relationship-queries.soql +203 -0
- package/skills/querying-soql/assets/selector-class.cls +219 -0
- package/skills/querying-soql/references/anti-patterns.md +348 -0
- package/skills/querying-soql/references/cli-commands.md +358 -0
- package/skills/querying-soql/references/field-coverage-rules.md +514 -0
- package/skills/querying-soql/references/query-optimization.md +142 -0
- package/skills/querying-soql/references/selector-patterns.md +479 -0
- package/skills/querying-soql/references/soql-reference.md +227 -0
- package/skills/querying-soql/references/soql-syntax-reference.md +208 -0
- package/skills/querying-soql/scripts/post-tool-validate.py +322 -0
- package/skills/retrieving-datacloud/CREDITS.md +7 -0
- package/skills/retrieving-datacloud/README.md +44 -0
- package/skills/retrieving-datacloud/SKILL.md +120 -0
- package/skills/retrieving-datacloud/examples/search-indexes/hybrid-structured.json +44 -0
- package/skills/retrieving-datacloud/examples/search-indexes/vector-knowledge.json +43 -0
- package/skills/running-apex-tests/CREDITS.md +22 -0
- package/skills/running-apex-tests/README.md +94 -0
- package/skills/running-apex-tests/SKILL.md +158 -0
- package/skills/running-apex-tests/assets/basic-test.cls +169 -0
- package/skills/running-apex-tests/assets/bulk-test.cls +255 -0
- package/skills/running-apex-tests/assets/dml-mock.cls +339 -0
- package/skills/running-apex-tests/assets/mock-callout-test.cls +353 -0
- package/skills/running-apex-tests/assets/stub-provider-example.cls +364 -0
- package/skills/running-apex-tests/assets/test-data-factory.cls +328 -0
- package/skills/running-apex-tests/hooks/scripts/parse-test-results.py +364 -0
- package/skills/running-apex-tests/references/cli-commands.md +289 -0
- package/skills/running-apex-tests/references/mocking-patterns.md +500 -0
- package/skills/running-apex-tests/references/performance-optimization.md +283 -0
- package/skills/running-apex-tests/references/test-fix-loop.md +49 -0
- package/skills/running-apex-tests/references/test-patterns.md +154 -0
- package/skills/running-apex-tests/references/testing-best-practices.md +509 -0
- package/skills/segmenting-datacloud/CREDITS.md +3 -0
- package/skills/segmenting-datacloud/README.md +36 -0
- package/skills/segmenting-datacloud/SKILL.md +115 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: generating-lwc-components
|
|
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 generating-apex), Aura components, or Visualforce."
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.1"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# generating-lwc-components: Lightning Web Components Development
|
|
10
|
+
|
|
11
|
+
Use this skill when the user needs **Lightning Web Components**: LWC bundles, wire patterns, Apex/GraphQL integration, SLDS 2 styling, accessibility, performance work, or Jest unit tests.
|
|
12
|
+
|
|
13
|
+
## When This Skill Owns the Task
|
|
14
|
+
|
|
15
|
+
Use `generating-lwc-components` when the work involves:
|
|
16
|
+
- `lwc/**/*.js`, `.html`, `.css`, `.js-meta.xml`
|
|
17
|
+
- component scaffolding and bundle design
|
|
18
|
+
- wire service, Apex integration, GraphQL integration
|
|
19
|
+
- SLDS 2, dark mode, and accessibility work
|
|
20
|
+
- Jest unit tests for LWC
|
|
21
|
+
|
|
22
|
+
Delegate elsewhere when the user is:
|
|
23
|
+
- writing Apex controllers or business logic first → [generating-apex](../generating-apex/SKILL.md)
|
|
24
|
+
- building Flow XML rather than an LWC screen component → [generating-flow](../generating-flow/SKILL.md)
|
|
25
|
+
- deploying metadata → [deploying-metadata](../deploying-metadata/SKILL.md)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Required Context to Gather First
|
|
30
|
+
|
|
31
|
+
Ask for or infer:
|
|
32
|
+
- component purpose and target surface
|
|
33
|
+
- data source: LDS, Apex, GraphQL, LMS, or external system via Apex
|
|
34
|
+
- whether the user needs tests
|
|
35
|
+
- whether the component must run in Flow, App Builder, Experience Cloud, or dashboard contexts
|
|
36
|
+
- accessibility and styling expectations
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Recommended Workflow
|
|
41
|
+
|
|
42
|
+
### 1. Choose the right architecture
|
|
43
|
+
Use the **PICKLES** mindset:
|
|
44
|
+
- prototype
|
|
45
|
+
- integrate the right data source
|
|
46
|
+
- compose component boundaries
|
|
47
|
+
- define interaction model
|
|
48
|
+
- use platform libraries
|
|
49
|
+
- optimize execution
|
|
50
|
+
- enforce security
|
|
51
|
+
|
|
52
|
+
### 2. Choose the right data access pattern
|
|
53
|
+
| Need | Default pattern |
|
|
54
|
+
|---|---|
|
|
55
|
+
| single-record UI | LDS / `getRecord` |
|
|
56
|
+
| simple CRUD form | base record form components |
|
|
57
|
+
| complex server query | Apex `@AuraEnabled(cacheable=true)` |
|
|
58
|
+
| related graph data | GraphQL wire adapter |
|
|
59
|
+
| cross-DOM communication | Lightning Message Service |
|
|
60
|
+
|
|
61
|
+
### 3. Start from an asset when useful
|
|
62
|
+
Use provided assets for:
|
|
63
|
+
- basic component bundles
|
|
64
|
+
- datatables
|
|
65
|
+
- modal patterns
|
|
66
|
+
- Flow screen components
|
|
67
|
+
- GraphQL components
|
|
68
|
+
- LMS message channels
|
|
69
|
+
- Jest tests
|
|
70
|
+
- TypeScript-enabled components
|
|
71
|
+
|
|
72
|
+
### 4. Validate for frontend quality
|
|
73
|
+
Check:
|
|
74
|
+
- accessibility
|
|
75
|
+
- SLDS 2 / dark mode compliance
|
|
76
|
+
- event contracts
|
|
77
|
+
- performance / rerender safety
|
|
78
|
+
- Jest coverage when required
|
|
79
|
+
|
|
80
|
+
### 5. Hand off supporting backend or deploy work
|
|
81
|
+
Use:
|
|
82
|
+
- [generating-apex](../generating-apex/SKILL.md) for controllers / services
|
|
83
|
+
- [deploying-metadata](../deploying-metadata/SKILL.md) for deployment
|
|
84
|
+
- [running-apex-tests](../running-apex-tests/SKILL.md) only for Apex-side test loops, not Jest
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## High-Signal Rules
|
|
89
|
+
|
|
90
|
+
- prefer platform base components over reinventing controls
|
|
91
|
+
- use `@wire` for reactive read-only use cases; imperative calls for explicit actions and DML paths
|
|
92
|
+
- do not introduce inaccessible custom UI
|
|
93
|
+
- avoid hardcoded colors; use SLDS 2-compatible styling hooks / variables
|
|
94
|
+
- avoid rerender loops in `renderedCallback()`
|
|
95
|
+
- keep component communication patterns explicit and minimal
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Output Format
|
|
100
|
+
|
|
101
|
+
When finishing, report in this order:
|
|
102
|
+
1. **Component(s) created or updated**
|
|
103
|
+
2. **Data access pattern chosen**
|
|
104
|
+
3. **Files changed**
|
|
105
|
+
4. **Accessibility / styling / testing notes**
|
|
106
|
+
5. **Next implementation or deploy step**
|
|
107
|
+
|
|
108
|
+
Suggested shape:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
LWC work: <summary>
|
|
112
|
+
Pattern: <wire / apex / graphql / lms / flow-screen>
|
|
113
|
+
Files: <paths>
|
|
114
|
+
Quality: <a11y, SLDS2, dark mode, Jest>
|
|
115
|
+
Next step: <deploy, add controller, or run tests>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Local Development Server
|
|
121
|
+
|
|
122
|
+
Preview LWC components locally with hot reload — no deployment needed. Run the commands in `scripts/local-dev-preview.sh` to start a local dev session for a component, app, or Experience Cloud site.
|
|
123
|
+
|
|
124
|
+
Local Dev commands install just-in-time on first run. They are long-running processes that open a browser with live preview. Changes to `.js`, `.html`, and `.css` files auto-reload instantly. Requires an active org connection for data and Apex callouts.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Cross-Skill Integration
|
|
129
|
+
|
|
130
|
+
| Need | Delegate to | Reason |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| Apex controller or service | [generating-apex](../generating-apex/SKILL.md) | backend logic |
|
|
133
|
+
| embed in Flow screens | [generating-flow](../generating-flow/SKILL.md) | declarative orchestration |
|
|
134
|
+
| deploy component bundle | [deploying-metadata](../deploying-metadata/SKILL.md) | org rollout |
|
|
135
|
+
| create supporting metadata (message channels, objects) | [deploying-metadata](../deploying-metadata/SKILL.md) | metadata deployment |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Reference File Index
|
|
140
|
+
|
|
141
|
+
### Start here
|
|
142
|
+
- [references/component-patterns.md](references/component-patterns.md) — component architecture patterns and bundle design
|
|
143
|
+
- [references/slds-design-guide.md](references/slds-design-guide.md) — SLDS 2 styling, dark mode, CSS hooks
|
|
144
|
+
- [references/lwc-best-practices.md](references/lwc-best-practices.md) — high-signal rules and anti-patterns
|
|
145
|
+
- [references/scoring-and-testing.md](references/scoring-and-testing.md) — 165-point scoring rubric across 8 categories
|
|
146
|
+
- [references/jest-testing.md](references/jest-testing.md) — Jest unit test patterns and async rendering helpers
|
|
147
|
+
- [references/slds-blueprints.json](references/slds-blueprints.json) — machine-readable SLDS component blueprints
|
|
148
|
+
- [references/cli-commands.md](references/cli-commands.md) — SF CLI commands for LWC development
|
|
149
|
+
|
|
150
|
+
### Accessibility / performance / state
|
|
151
|
+
- [references/accessibility-guide.md](references/accessibility-guide.md) — WCAG, ARIA, keyboard navigation patterns
|
|
152
|
+
- [references/performance-guide.md](references/performance-guide.md) — lazy loading, debouncing, rerender safety
|
|
153
|
+
- [references/state-management.md](references/state-management.md) — reactive state patterns and LMS
|
|
154
|
+
- [references/template-anti-patterns.md](references/template-anti-patterns.md) — common HTML template mistakes to avoid
|
|
155
|
+
|
|
156
|
+
### Integration / advanced features
|
|
157
|
+
- [references/lms-guide.md](references/lms-guide.md) — Lightning Message Service patterns
|
|
158
|
+
- [references/flow-integration-guide.md](references/flow-integration-guide.md) — Flow screen component design
|
|
159
|
+
- [references/advanced-features.md](references/advanced-features.md) — Spring '26 features: TypeScript, lwc:on, GraphQL mutations
|
|
160
|
+
- [references/async-notification-patterns.md](references/async-notification-patterns.md) — toast, notifications, async flows
|
|
161
|
+
- [references/triangle-pattern.md](references/triangle-pattern.md) — parent-child-sibling communication triangle
|
|
162
|
+
|
|
163
|
+
### Asset templates
|
|
164
|
+
- [assets/basic-component/basicComponent.js](assets/basic-component/basicComponent.js) — wire service, error/loading states, event dispatching
|
|
165
|
+
- [assets/datatable-component/datatableComponent.js](assets/datatable-component/datatableComponent.js) — datatable with inline editing
|
|
166
|
+
- [assets/flow-screen-component/flowScreenComponent.js](assets/flow-screen-component/flowScreenComponent.js) — Flow screen with input/output properties
|
|
167
|
+
- [assets/form-component/formComponent.js](assets/form-component/formComponent.js) — form validation and DML patterns
|
|
168
|
+
- [assets/graphql-component/graphqlComponent.js](assets/graphql-component/graphqlComponent.js) — GraphQL wire adapter with cursor-based pagination
|
|
169
|
+
- [assets/jest-test/componentName.test.js.example](assets/jest-test/componentName.test.js.example) — Jest test template (copy and rename, remove `.example` suffix)
|
|
170
|
+
- [assets/message-channel/lmsPublisher.js](assets/message-channel/lmsPublisher.js) — LMS publisher pattern
|
|
171
|
+
- [assets/message-channel/lmsSubscriber.js](assets/message-channel/lmsSubscriber.js) — LMS subscriber pattern
|
|
172
|
+
- [assets/modal-component/modalComponent.js](assets/modal-component/modalComponent.js) — modal with focus trap and ESC handling
|
|
173
|
+
- [assets/record-picker/recordPicker.js](assets/record-picker/recordPicker.js) — record picker with search
|
|
174
|
+
- [assets/state-store/store.js](assets/state-store/store.js) — reactive state store for cross-component state
|
|
175
|
+
- [assets/typescript-component/typescriptComponent.ts](assets/typescript-component/typescriptComponent.ts) — TypeScript-enabled component (Spring '26)
|
|
176
|
+
- [assets/workspace-api/workspaceComponent.js](assets/workspace-api/workspaceComponent.js) — workspace API for tab and focus management
|
|
177
|
+
- [assets/apex-controller/LwcController.cls](assets/apex-controller/LwcController.cls) — Apex controller with `@AuraEnabled(cacheable=true)` patterns
|
|
178
|
+
|
|
179
|
+
### Scripts
|
|
180
|
+
- [scripts/local-dev-preview.sh](scripts/local-dev-preview.sh) — local dev server commands for component, app, and site preview
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Score Guide
|
|
185
|
+
|
|
186
|
+
| Score | Meaning |
|
|
187
|
+
|---|---|
|
|
188
|
+
| 150+ | production-ready LWC bundle |
|
|
189
|
+
| 125–149 | strong component with minor polish left |
|
|
190
|
+
| 100–124 | functional but review recommended |
|
|
191
|
+
| < 100 | needs significant improvement |
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* APEX CONTROLLER TEMPLATE FOR LWC
|
|
3
|
+
*
|
|
4
|
+
* This template demonstrates @AuraEnabled methods for LWC with:
|
|
5
|
+
* - Cacheable methods for wire service
|
|
6
|
+
* - Non-cacheable methods for data mutations
|
|
7
|
+
* - Proper error handling
|
|
8
|
+
* - Security enforcement
|
|
9
|
+
* - Bulk-safe patterns
|
|
10
|
+
*
|
|
11
|
+
* Replace: LwcController → YourControllerName
|
|
12
|
+
*/
|
|
13
|
+
public with sharing class LwcController {
|
|
14
|
+
|
|
15
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
16
|
+
// CACHEABLE METHODS (For @wire service)
|
|
17
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get records for display in LWC
|
|
21
|
+
* Use with @wire decorator for automatic caching and refresh
|
|
22
|
+
*
|
|
23
|
+
* @param parentId - Parent record ID (optional filter)
|
|
24
|
+
* @param searchTerm - Search filter (optional)
|
|
25
|
+
* @param limitSize - Max records to return
|
|
26
|
+
* @return List of Account records
|
|
27
|
+
*/
|
|
28
|
+
@AuraEnabled(cacheable=true)
|
|
29
|
+
public static List<Account> getAccounts(Id parentId, String searchTerm, Integer limitSize) {
|
|
30
|
+
try {
|
|
31
|
+
Integer recordLimit = limitSize != null ? limitSize : 50;
|
|
32
|
+
String searchKey = String.isNotBlank(searchTerm)
|
|
33
|
+
? '%' + String.escapeSingleQuotes(searchTerm) + '%'
|
|
34
|
+
: '%';
|
|
35
|
+
|
|
36
|
+
return [
|
|
37
|
+
SELECT Id, Name, Industry, AnnualRevenue, Phone, CreatedDate
|
|
38
|
+
FROM Account
|
|
39
|
+
WHERE Name LIKE :searchKey
|
|
40
|
+
WITH SECURITY_ENFORCED
|
|
41
|
+
ORDER BY Name
|
|
42
|
+
LIMIT :recordLimit
|
|
43
|
+
];
|
|
44
|
+
} catch (Exception e) {
|
|
45
|
+
throw new AuraHandledException(e.getMessage());
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get single record by ID
|
|
51
|
+
*/
|
|
52
|
+
@AuraEnabled(cacheable=true)
|
|
53
|
+
public static Account getAccountById(Id accountId) {
|
|
54
|
+
try {
|
|
55
|
+
List<Account> accounts = [
|
|
56
|
+
SELECT Id, Name, Industry, AnnualRevenue, Phone, BillingAddress,
|
|
57
|
+
(SELECT Id, FirstName, LastName, Email FROM Contacts LIMIT 5)
|
|
58
|
+
FROM Account
|
|
59
|
+
WHERE Id = :accountId
|
|
60
|
+
WITH SECURITY_ENFORCED
|
|
61
|
+
LIMIT 1
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
if (accounts.isEmpty()) {
|
|
65
|
+
throw new AuraHandledException('Account not found');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return accounts[0];
|
|
69
|
+
} catch (Exception e) {
|
|
70
|
+
throw new AuraHandledException(e.getMessage());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Get picklist values for a field
|
|
76
|
+
*/
|
|
77
|
+
@AuraEnabled(cacheable=true)
|
|
78
|
+
public static List<PicklistOption> getIndustryOptions() {
|
|
79
|
+
List<PicklistOption> options = new List<PicklistOption>();
|
|
80
|
+
|
|
81
|
+
Schema.DescribeFieldResult fieldResult = Account.Industry.getDescribe();
|
|
82
|
+
List<Schema.PicklistEntry> entries = fieldResult.getPicklistValues();
|
|
83
|
+
|
|
84
|
+
for (Schema.PicklistEntry entry : entries) {
|
|
85
|
+
if (entry.isActive()) {
|
|
86
|
+
options.add(new PicklistOption(entry.getLabel(), entry.getValue()));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return options;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
94
|
+
// NON-CACHEABLE METHODS (For data mutations)
|
|
95
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Create a new account
|
|
99
|
+
*
|
|
100
|
+
* @param accountData - JSON string of account fields
|
|
101
|
+
* @return Created Account with Id
|
|
102
|
+
*/
|
|
103
|
+
@AuraEnabled
|
|
104
|
+
public static Account createAccount(String accountData) {
|
|
105
|
+
try {
|
|
106
|
+
// Parse JSON to Map
|
|
107
|
+
Map<String, Object> fieldMap = (Map<String, Object>) JSON.deserializeUntyped(accountData);
|
|
108
|
+
|
|
109
|
+
// Create Account record
|
|
110
|
+
Account newAccount = new Account();
|
|
111
|
+
newAccount.Name = (String) fieldMap.get('Name');
|
|
112
|
+
newAccount.Industry = (String) fieldMap.get('Industry');
|
|
113
|
+
newAccount.Phone = (String) fieldMap.get('Phone');
|
|
114
|
+
|
|
115
|
+
// Validate required fields
|
|
116
|
+
if (String.isBlank(newAccount.Name)) {
|
|
117
|
+
throw new AuraHandledException('Account name is required');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Insert with security check
|
|
121
|
+
SObjectAccessDecision decision = Security.stripInaccessible(
|
|
122
|
+
AccessType.CREATABLE,
|
|
123
|
+
new List<Account>{ newAccount }
|
|
124
|
+
);
|
|
125
|
+
insert decision.getRecords();
|
|
126
|
+
|
|
127
|
+
return (Account) decision.getRecords()[0];
|
|
128
|
+
} catch (DmlException e) {
|
|
129
|
+
throw new AuraHandledException(e.getDmlMessage(0));
|
|
130
|
+
} catch (Exception e) {
|
|
131
|
+
throw new AuraHandledException(e.getMessage());
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Update an existing account
|
|
137
|
+
*
|
|
138
|
+
* @param accountId - Record ID to update
|
|
139
|
+
* @param accountData - JSON string of fields to update
|
|
140
|
+
* @return Updated Account
|
|
141
|
+
*/
|
|
142
|
+
@AuraEnabled
|
|
143
|
+
public static Account updateAccount(Id accountId, String accountData) {
|
|
144
|
+
try {
|
|
145
|
+
// Verify record exists and user has access
|
|
146
|
+
List<Account> existing = [
|
|
147
|
+
SELECT Id FROM Account
|
|
148
|
+
WHERE Id = :accountId
|
|
149
|
+
WITH SECURITY_ENFORCED
|
|
150
|
+
LIMIT 1
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
if (existing.isEmpty()) {
|
|
154
|
+
throw new AuraHandledException('Account not found or access denied');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Parse and apply updates
|
|
158
|
+
Map<String, Object> fieldMap = (Map<String, Object>) JSON.deserializeUntyped(accountData);
|
|
159
|
+
|
|
160
|
+
Account accountToUpdate = new Account(Id = accountId);
|
|
161
|
+
|
|
162
|
+
if (fieldMap.containsKey('Name')) {
|
|
163
|
+
accountToUpdate.Name = (String) fieldMap.get('Name');
|
|
164
|
+
}
|
|
165
|
+
if (fieldMap.containsKey('Industry')) {
|
|
166
|
+
accountToUpdate.Industry = (String) fieldMap.get('Industry');
|
|
167
|
+
}
|
|
168
|
+
if (fieldMap.containsKey('Phone')) {
|
|
169
|
+
accountToUpdate.Phone = (String) fieldMap.get('Phone');
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Update with security check
|
|
173
|
+
SObjectAccessDecision decision = Security.stripInaccessible(
|
|
174
|
+
AccessType.UPDATABLE,
|
|
175
|
+
new List<Account>{ accountToUpdate }
|
|
176
|
+
);
|
|
177
|
+
update decision.getRecords();
|
|
178
|
+
|
|
179
|
+
// Return refreshed record
|
|
180
|
+
return getAccountById(accountId);
|
|
181
|
+
} catch (DmlException e) {
|
|
182
|
+
throw new AuraHandledException(e.getDmlMessage(0));
|
|
183
|
+
} catch (Exception e) {
|
|
184
|
+
throw new AuraHandledException(e.getMessage());
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Delete records
|
|
190
|
+
*
|
|
191
|
+
* @param recordIds - List of record IDs to delete
|
|
192
|
+
*/
|
|
193
|
+
@AuraEnabled
|
|
194
|
+
public static void deleteAccounts(List<Id> recordIds) {
|
|
195
|
+
try {
|
|
196
|
+
if (recordIds == null || recordIds.isEmpty()) {
|
|
197
|
+
throw new AuraHandledException('No records specified for deletion');
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Query records to verify access
|
|
201
|
+
List<Account> accountsToDelete = [
|
|
202
|
+
SELECT Id FROM Account
|
|
203
|
+
WHERE Id IN :recordIds
|
|
204
|
+
WITH SECURITY_ENFORCED
|
|
205
|
+
];
|
|
206
|
+
|
|
207
|
+
if (accountsToDelete.size() != recordIds.size()) {
|
|
208
|
+
throw new AuraHandledException('Some records not found or access denied');
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
delete accountsToDelete;
|
|
212
|
+
} catch (DmlException e) {
|
|
213
|
+
throw new AuraHandledException(e.getDmlMessage(0));
|
|
214
|
+
} catch (Exception e) {
|
|
215
|
+
throw new AuraHandledException(e.getMessage());
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Bulk update records (for datatable inline editing)
|
|
221
|
+
*
|
|
222
|
+
* @param records - List of records with Id and fields to update
|
|
223
|
+
*/
|
|
224
|
+
@AuraEnabled
|
|
225
|
+
public static void updateRecords(List<Account> records) {
|
|
226
|
+
try {
|
|
227
|
+
if (records == null || records.isEmpty()) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Security check
|
|
232
|
+
SObjectAccessDecision decision = Security.stripInaccessible(
|
|
233
|
+
AccessType.UPDATABLE,
|
|
234
|
+
records
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
update decision.getRecords();
|
|
238
|
+
} catch (DmlException e) {
|
|
239
|
+
throw new AuraHandledException(e.getDmlMessage(0));
|
|
240
|
+
} catch (Exception e) {
|
|
241
|
+
throw new AuraHandledException(e.getMessage());
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
246
|
+
// PAGINATED QUERY (For infinite scrolling)
|
|
247
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Get paginated records for infinite scrolling
|
|
251
|
+
*
|
|
252
|
+
* @param limitSize - Records per page
|
|
253
|
+
* @param offset - Starting position
|
|
254
|
+
* @param sortBy - Field to sort by
|
|
255
|
+
* @param sortDirection - ASC or DESC
|
|
256
|
+
* @return PagedResult with records and total count
|
|
257
|
+
*/
|
|
258
|
+
@AuraEnabled(cacheable=true)
|
|
259
|
+
public static PagedResult getPagedAccounts(
|
|
260
|
+
Integer limitSize,
|
|
261
|
+
Integer offset,
|
|
262
|
+
String sortBy,
|
|
263
|
+
String sortDirection
|
|
264
|
+
) {
|
|
265
|
+
try {
|
|
266
|
+
Integer recordLimit = limitSize != null ? limitSize : 50;
|
|
267
|
+
Integer recordOffset = offset != null ? offset : 0;
|
|
268
|
+
String sortField = String.isNotBlank(sortBy) ? sortBy : 'Name';
|
|
269
|
+
String sortDir = sortDirection == 'desc' ? 'DESC' : 'ASC';
|
|
270
|
+
|
|
271
|
+
// Whitelist allowed sort fields to prevent SOQL injection
|
|
272
|
+
Set<String> allowedSortFields = new Set<String>{
|
|
273
|
+
'Name', 'Industry', 'AnnualRevenue', 'CreatedDate', 'Phone'
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
if (!allowedSortFields.contains(sortField)) {
|
|
277
|
+
sortField = 'Name';
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Build dynamic query
|
|
281
|
+
String query = 'SELECT Id, Name, Industry, AnnualRevenue, Phone, CreatedDate ' +
|
|
282
|
+
'FROM Account ' +
|
|
283
|
+
'WITH SECURITY_ENFORCED ' +
|
|
284
|
+
'ORDER BY ' + sortField + ' ' + sortDir + ' NULLS LAST ' +
|
|
285
|
+
'LIMIT :recordLimit OFFSET :recordOffset';
|
|
286
|
+
|
|
287
|
+
List<Account> records = Database.query(query);
|
|
288
|
+
|
|
289
|
+
// Get total count
|
|
290
|
+
Integer totalCount = [SELECT COUNT() FROM Account WITH SECURITY_ENFORCED];
|
|
291
|
+
|
|
292
|
+
return new PagedResult(records, totalCount);
|
|
293
|
+
} catch (Exception e) {
|
|
294
|
+
throw new AuraHandledException(e.getMessage());
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
299
|
+
// WRAPPER CLASSES
|
|
300
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Wrapper for picklist options
|
|
304
|
+
*/
|
|
305
|
+
public class PicklistOption {
|
|
306
|
+
@AuraEnabled public String label;
|
|
307
|
+
@AuraEnabled public String value;
|
|
308
|
+
|
|
309
|
+
public PicklistOption(String label, String value) {
|
|
310
|
+
this.label = label;
|
|
311
|
+
this.value = value;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Wrapper for paginated results
|
|
317
|
+
*/
|
|
318
|
+
public class PagedResult {
|
|
319
|
+
@AuraEnabled public List<Account> records;
|
|
320
|
+
@AuraEnabled public Integer totalCount;
|
|
321
|
+
|
|
322
|
+
public PagedResult(List<Account> records, Integer totalCount) {
|
|
323
|
+
this.records = records;
|
|
324
|
+
this.totalCount = totalCount;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BASIC LWC COMPONENT TEMPLATE - CSS
|
|
3
|
+
*
|
|
4
|
+
* CSS in LWC is automatically scoped to the component.
|
|
5
|
+
* Use SLDS (Salesforce Lightning Design System) classes when possible.
|
|
6
|
+
*
|
|
7
|
+
* CSS Custom Properties (variables) can be exposed for theming.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* Host element styling */
|
|
11
|
+
:host {
|
|
12
|
+
display: block;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Custom properties for theming */
|
|
16
|
+
:host {
|
|
17
|
+
--card-background: var(--lwc-colorBackground, #ffffff);
|
|
18
|
+
--card-border-radius: var(--lwc-borderRadiusMedium, 0.25rem);
|
|
19
|
+
--item-hover-background: var(--lwc-colorBackgroundRowHover, #f3f3f3);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* List item hover effect */
|
|
23
|
+
.slds-item:hover {
|
|
24
|
+
background-color: var(--item-hover-background);
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Smooth transitions */
|
|
29
|
+
.slds-tile {
|
|
30
|
+
transition: background-color 0.2s ease;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Loading state fade */
|
|
34
|
+
.slds-spinner {
|
|
35
|
+
opacity: 0.8;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Error state styling */
|
|
39
|
+
.slds-alert_error {
|
|
40
|
+
border-radius: var(--card-border-radius);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* Empty state styling */
|
|
44
|
+
.empty-state {
|
|
45
|
+
padding: 2rem;
|
|
46
|
+
text-align: center;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Responsive adjustments */
|
|
50
|
+
@media (max-width: 480px) {
|
|
51
|
+
.slds-tile__detail {
|
|
52
|
+
padding: 0.5rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.slds-text-heading_small {
|
|
56
|
+
font-size: 0.875rem;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Focus states for accessibility */
|
|
61
|
+
a:focus {
|
|
62
|
+
outline: 2px solid var(--lwc-colorBorderBrand, #1589ee);
|
|
63
|
+
outline-offset: 2px;
|
|
64
|
+
border-radius: 0.25rem;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* High contrast mode support */
|
|
68
|
+
@media (prefers-contrast: high) {
|
|
69
|
+
.slds-item:hover {
|
|
70
|
+
background-color: highlight;
|
|
71
|
+
}
|
|
72
|
+
}
|