@salesforce/afv-skills 1.46.0 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-observe/SKILL.md +32 -4
  3. package/skills/agentforce-observe/references/ahm-alerts.md +719 -0
  4. package/skills/consumer-goods-promotion-bo-api-deploy/SKILL.md +275 -0
  5. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/README.md +32 -0
  6. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/SetCommentValue.cls +75 -0
  7. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/SetCommentValue.cls-meta.xml +5 -0
  8. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/interview-answers.json +13 -0
  9. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/copy.json +10 -0
  10. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/create.json +20 -0
  11. package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/update.json +16 -0
  12. package/skills/consumer-goods-promotion-bo-api-deploy/references/conventions-and-payload-rules.md +273 -0
  13. package/skills/consumer-goods-promotion-bo-api-deploy/references/generate-and-wire.md +236 -0
  14. package/skills/consumer-goods-promotion-bo-api-deploy/references/reference-example-set-comment-value.md +132 -0
  15. package/skills/consumer-goods-promotion-bo-api-deploy/references/smoke-and-verify.md +211 -0
  16. package/skills/dx-devops-project-manage/SKILL.md +197 -0
  17. package/skills/dx-devops-project-manage/examples/common-workflows.md +197 -0
  18. package/skills/dx-devops-project-manage/references/cli-commands.md +295 -0
  19. package/skills/dx-devops-project-manage/scripts/create-project.sh +48 -0
  20. package/skills/dx-devops-project-manage/scripts/list-projects.sh +51 -0
  21. package/skills/dx-devops-project-manage/scripts/update-project.sh +96 -0
  22. package/skills/education-cloud-academic-calendar-generate/SKILL.md +225 -0
  23. package/skills/education-cloud-academic-calendar-generate/examples/quarter-calendar.json +47 -0
  24. package/skills/education-cloud-academic-calendar-generate/examples/sample-output.md +57 -0
  25. package/skills/education-cloud-academic-calendar-generate/examples/semester-calendar.json +54 -0
  26. package/skills/education-cloud-academic-calendar-generate/references/calendar-systems.md +127 -0
  27. package/skills/education-cloud-academic-calendar-generate/references/date-validation.md +222 -0
  28. package/skills/education-cloud-academic-calendar-generate/references/foundation_prerequisites.md +40 -0
  29. package/skills/education-cloud-academic-calendar-generate/scripts/validate_calendar_dates.py +143 -0
  30. package/skills/education-cloud-course-catalog-migrate/SKILL.md +321 -0
  31. package/skills/education-cloud-course-catalog-migrate/references/gotchas-detail.md +16 -0
  32. package/skills/education-cloud-course-catalog-migrate/references/gotchas.md +16 -0
  33. package/skills/education-cloud-course-catalog-migrate/references/large-catalog-handling.md +42 -0
  34. package/skills/education-cloud-course-catalog-migrate/scripts/batch_courses.py +36 -0
  35. package/skills/education-cloud-course-catalog-migrate/scripts/detect_linked_courses.py +51 -0
  36. package/skills/education-cloud-course-catalog-migrate/scripts/detect_modality_variants.py +48 -0
  37. package/skills/education-cloud-course-catalog-migrate/scripts/resolve_api_version.py +43 -0
  38. package/skills/education-cloud-course-catalog-migrate/scripts/split_course_code.py +39 -0
  39. package/skills/education-cloud-course-catalog-migrate/scripts/validate_completeness.py +54 -0
  40. package/skills/education-cloud-domain-configure/SKILL.md +234 -0
  41. package/skills/education-cloud-domain-configure/references/dependent-features.md +198 -0
  42. package/skills/education-cloud-domain-configure/references/domain-features/academic-operations.md +386 -0
  43. package/skills/education-cloud-domain-configure/references/domain-features/alumni-relations.md +155 -0
  44. package/skills/education-cloud-domain-configure/references/domain-features/cross-domain-dependencies.md +18 -0
  45. package/skills/education-cloud-domain-configure/references/domain-features/industriessettings-toggle-reference.md +43 -0
  46. package/skills/education-cloud-domain-configure/references/domain-features/mentoring.md +198 -0
  47. package/skills/education-cloud-domain-configure/references/domain-features/recruitment-admissions.md +315 -0
  48. package/skills/education-cloud-domain-configure/references/domain-features/student-management.md +155 -0
  49. package/skills/education-cloud-domain-configure/references/domain-features/student-success.md +249 -0
  50. package/skills/education-cloud-domain-configure/references/domain-features.md +27 -0
  51. package/skills/education-cloud-domain-configure/references/gotchas-extended.md +23 -0
  52. package/skills/education-cloud-domain-configure/references/toggle-write-path.md +67 -0
  53. package/skills/education-cloud-domain-configure/scripts/check_license_provisioned.py +62 -0
  54. package/skills/education-cloud-domain-configure/scripts/check_org_edition.py +44 -0
  55. package/skills/education-cloud-domain-configure/scripts/check_permission_assigned.py +39 -0
  56. package/skills/education-cloud-multi-campus-configure/SKILL.md +7 -0
  57. package/skills/education-cloud-multi-campus-configure/references/foundation_prerequisites.md +1 -2
  58. package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +177 -0
  59. package/skills/education-cloud-student-recruitment-agent-configure/references/agent-and-subagents.md +151 -0
  60. package/skills/education-cloud-student-recruitment-agent-configure/references/customer-narration.md +34 -0
  61. package/skills/education-cloud-student-recruitment-agent-configure/references/execution-model.md +54 -0
  62. package/skills/education-cloud-student-recruitment-agent-configure/references/flows.md +82 -0
  63. package/skills/education-cloud-student-recruitment-agent-configure/references/grounding.md +199 -0
  64. package/skills/education-cloud-student-recruitment-agent-configure/references/permissions.md +183 -0
  65. package/skills/education-cloud-student-recruitment-agent-configure/references/platform-enablement.md +82 -0
  66. package/skills/education-cloud-student-recruitment-agent-configure/references/prerequisites.md +158 -0
  67. package/skills/education-cloud-student-recruitment-agent-configure/references/routing.md +141 -0
  68. package/skills/experience-cms-brand-apply/SKILL.md +5 -5
  69. package/skills/experience-cms-brand-create/SKILL.md +2 -2
  70. package/skills/experience-cms-content-generate/SKILL.md +1 -0
  71. package/skills/experience-cms-content-render/SKILL.md +173 -0
  72. package/skills/experience-cms-content-render/assets/angular/DetailPage.component.ts +25 -0
  73. package/skills/experience-cms-content-render/assets/angular/MediaRenderer.component.ts +133 -0
  74. package/skills/experience-cms-content-render/assets/angular/TypeList.component.ts +38 -0
  75. package/skills/experience-cms-content-render/assets/angular/TypeRenderer.component.ts +90 -0
  76. package/skills/experience-cms-content-render/assets/angular/cms-content.component.ts +248 -0
  77. package/skills/experience-cms-content-render/assets/angular/cms-item.service.ts +100 -0
  78. package/skills/experience-cms-content-render/assets/react/DetailPage.tsx +20 -0
  79. package/skills/experience-cms-content-render/assets/react/MediaRenderer.tsx +129 -0
  80. package/skills/experience-cms-content-render/assets/react/TypeList.tsx +40 -0
  81. package/skills/experience-cms-content-render/assets/react/TypeRenderer.tsx +64 -0
  82. package/skills/experience-cms-content-render/assets/react/heuristicRenderer.tsx +310 -0
  83. package/skills/experience-cms-content-render/assets/react/useCmsItem.ts +129 -0
  84. package/skills/experience-cms-content-render/assets/shared/cmsContentType.ts +49 -0
  85. package/skills/experience-cms-content-render/assets/shared/cmsCore.types.ts +96 -0
  86. package/skills/experience-cms-content-render/assets/shared/externalRefs.ts +55 -0
  87. package/skills/experience-cms-content-render/references/bulk-loading.md +60 -0
  88. package/skills/experience-cms-content-render/references/codegen-guardrails.md +111 -0
  89. package/skills/experience-cms-content-render/references/detail-pages.md +87 -0
  90. package/skills/experience-cms-content-render/references/embed-recipes.md +127 -0
  91. package/skills/experience-cms-content-render/references/failure-modes.md +96 -0
  92. package/skills/experience-cms-content-render/references/heuristic-render-rules.md +131 -0
  93. package/skills/experience-cms-content-render/references/init-scaffold.md +122 -0
  94. package/skills/experience-cms-content-render/references/interaction-model.md +173 -0
  95. package/skills/experience-cms-content-render/references/package-api.md +106 -0
  96. package/skills/experience-cms-content-render/references/schema-sync.md +114 -0
  97. package/skills/experience-cms-content-render/references/styling-scopes.md +65 -0
  98. package/skills/experience-cms-content-render/references/verify.md +49 -0
  99. package/skills/experience-cms-content-type-generate/SKILL.md +2 -2
  100. package/skills/experience-content-media-stock-image-search/SKILL.md +5 -4
  101. package/skills/experience-search-coordinate/SKILL.md +198 -0
  102. package/skills/experience-search-coordinate/assets/search-payload-template.json +25 -0
  103. package/skills/experience-search-coordinate/references/content-route.md +313 -0
  104. package/skills/experience-search-coordinate/references/content-type-discovery.md +57 -0
  105. package/skills/experience-search-coordinate/references/media-route.md +172 -0
  106. package/skills/experience-search-coordinate/references/scope-resolution.md +14 -0
  107. package/skills/experience-ui-bundle-localize/SKILL.md +1 -1
  108. package/skills/experience-ui-bundle-localize/references/i18n-setup.md +5 -3
  109. package/skills/experience-ui-bundle-project-generate/SKILL.md +18 -14
  110. package/skills/experience-ui-bundle-project-generate/references/angular-project-generate.md +22 -0
  111. package/skills/experience-ui-bundle-project-generate/references/react-project-generate.md +20 -0
  112. package/skills/experience-ui-bundle-salesforce-data-access/SKILL.md +58 -54
  113. package/skills/experience-ui-bundle-salesforce-data-access/references/caching.md +6 -0
  114. package/skills/experience-ui-bundle-salesforce-data-access/references/graphiti-cli.md +2 -2
  115. package/skills/experience-ui-bundle-salesforce-data-access/references/migration.md +6 -0
  116. package/skills/experience-ui-bundle-salesforce-data-access/references/rest-and-integration.md +2 -1
  117. package/skills/experience-ui-bundle-salesforce-data-access/references/sdk-api.md +6 -0
  118. package/skills/experience-ui-bundle-site-generate/SKILL.md +59 -8
  119. package/skills/experience-ui-bundle-site-generate/references/configure-metadata-digital-experience.md +8 -3
  120. package/skills/experience-ui-bundle-site-generate/references/configure-metadata-language-settings.md +120 -0
  121. package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +336 -0
  122. package/skills/life-sciences-fieldsalesrep-coordinate/references/orchestration-flow.md +143 -0
  123. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-application-flexipage-mapping.md +127 -0
  124. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-deploy-commands.md +116 -0
  125. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-lifesci-metadata-deploy.md +111 -0
  126. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-overview.md +312 -0
  127. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-profile-layout-assignments.md +171 -0
  128. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-state-tracking.md +64 -0
  129. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-2-starter-config-trigger-handlers.md +122 -0
  130. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-4-user-provisioning-overview.md +335 -0
  131. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-4-user-provisioning-user-provisioning-details.md +140 -0
  132. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-execution-state-and-recovery.md +196 -0
  133. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-metadata-cache-generation.md +155 -0
  134. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-overview.md +307 -0
  135. package/skills/life-sciences-fieldsalesrep-coordinate/references/stage-5-visit-creation-visit-creation-data.md +211 -0
  136. package/skills/life-sciences-fieldsalesrep-coordinate/references/state-machine-and-changes.md +108 -0
  137. package/skills/life-sciences-kam-coordinate/SKILL.md +241 -0
  138. package/skills/life-sciences-kam-coordinate/references/orchestration-flow.md +152 -0
  139. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-application-flexipage-mapping.md +79 -0
  140. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-deploy-commands.md +131 -0
  141. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-kam-config-records.md +85 -0
  142. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-lifesci-metadata-deploy.md +112 -0
  143. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-overview.md +202 -0
  144. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-profile-layout-assignments.md +67 -0
  145. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-state-tracking.md +65 -0
  146. package/skills/life-sciences-kam-coordinate/references/stage-2-starter-config-trigger-handlers.md +123 -0
  147. package/skills/life-sciences-kam-coordinate/references/stage-4-participant-role-and-sprint.md +89 -0
  148. package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +337 -0
  149. package/skills/life-sciences-kam-coordinate/references/stage-5-data-creation-data.md +248 -0
  150. package/skills/life-sciences-kam-coordinate/references/stage-6-ipad-validation-script.md +35 -0
  151. package/skills/life-sciences-kam-coordinate/references/stage-6-metadata-cache-generation.md +155 -0
  152. package/skills/life-sciences-kam-coordinate/references/stage-6-user-provisioning-details.md +146 -0
  153. package/skills/life-sciences-kam-coordinate/references/stage-6-user-provisioning-overview.md +89 -0
  154. package/skills/life-sciences-kam-coordinate/references/state-machine-and-changes.md +114 -0
  155. package/skills/life-sciences-prerequisites-validate/SKILL.md +138 -0
  156. package/skills/life-sciences-prerequisites-validate/references/checks-org-settings.md +190 -0
  157. package/skills/life-sciences-prerequisites-validate/references/checks-user-and-package.md +211 -0
  158. package/skills/life-sciences-territory-configure/SKILL.md +217 -0
  159. package/skills/life-sciences-territory-configure/references/territory-metadata.md +262 -0
  160. package/skills/platform-dsar-policy-manage/SKILL.md +272 -0
  161. package/skills/platform-dsar-policy-manage/references/configure.md +106 -0
  162. package/skills/platform-dsar-policy-manage/references/export-and-history.md +123 -0
  163. package/skills/platform-dsar-policy-manage/references/gap-analysis-guide.md +150 -0
  164. package/skills/platform-dsar-policy-manage/references/gap-scan.md +129 -0
  165. package/skills/platform-dsar-policy-manage/references/headless-sor.md +59 -0
  166. package/skills/platform-dsar-policy-manage/references/report-format.md +59 -0
  167. package/skills/platform-dsar-policy-manage/scripts/tests/__init__.py +0 -0
  168. package/skills/platform-dsar-policy-manage/scripts/tests/test_validate_policy_tree.py +76 -0
  169. package/skills/platform-dsar-policy-manage/scripts/validate-policy-tree.py +130 -0
  170. package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +359 -0
  171. package/skills/platform-salesforce-connect-adapter-generate/references/official-examples.md +69 -0
  172. package/skills/platform-salesforce-connect-adapter-generate/references/scenarios.md +187 -0
  173. package/skills/service-agentforce-channel-configure/SKILL.md +33 -28
  174. package/skills/service-agentforce-human-escalation-configure/SKILL.md +205 -0
  175. package/skills/service-agentforce-human-escalation-configure/assets/escalation-thresholds.instructions.md +37 -0
  176. package/skills/service-agentforce-human-escalation-configure/assets/force-app/main/default/flows/Human_Escalation_Outbound_Flow.flow-meta.xml +173 -0
  177. package/skills/service-agentforce-human-escalation-configure/assets/package.xml +8 -0
  178. package/skills/service-agentforce-human-escalation-configure/assets/sfdx-project.json +5 -0
  179. package/skills/service-agentforce-human-escalation-configure/references/classifier-contracts.md +103 -0
  180. package/skills/service-agentforce-human-escalation-configure/references/escalation-mechanism.md +63 -0
  181. package/skills/service-agentforce-human-escalation-configure/references/failure-policy.md +44 -0
  182. package/skills/service-agentforce-human-escalation-configure/references/nga-escalation.md +57 -0
  183. package/skills/service-agentforce-human-escalation-configure/references/runtime-verification.md +72 -0
  184. package/skills/service-agentforce-human-escalation-configure/scripts/classify-agent-active.mjs +49 -0
  185. package/skills/service-agentforce-human-escalation-configure/scripts/classify-nga-escalation.mjs +166 -0
  186. package/skills/service-agentforce-human-escalation-configure/scripts/extract-outbound-route.mjs +67 -0
  187. package/skills/service-agentforce-human-escalation-configure/scripts/patch-escalation-surfaces.mjs +131 -0
  188. package/skills/service-agentforce-human-escalation-configure/scripts/tests/__init__.py +0 -0
  189. package/skills/service-agentforce-human-escalation-configure/scripts/tests/_bootstrap.py +249 -0
  190. package/skills/service-agentforce-human-escalation-configure/scripts/tests/test_escalation_contracts.py +899 -0
  191. package/skills/service-agentforce-human-escalation-configure/scripts/verify-and-configure.sh +705 -0
  192. package/skills/service-agentforce-human-escalation-configure/scripts/verify-escalation-config.mjs +89 -0
  193. package/skills/service-de-channel-routing-configure/SKILL.md +13 -5
  194. package/skills/service-de-channel-routing-configure/scripts/tests/test_skill_contract.py +25 -0
  195. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +23 -10
  196. package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +63 -48
  197. package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +6 -2
  198. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +20 -27
  199. package/skills/service-native-voice-recording-transcription-configure/SKILL.md +47 -27
  200. package/skills/service-native-voice-recording-transcription-configure/references/thunderbird-voice-settings.md +13 -9
  201. package/skills/service-native-voice-recording-transcription-configure/scripts/enable-recording-transcription.sh +104 -45
  202. package/skills/service-omni-agent-users-create/SKILL.md +96 -0
  203. package/skills/service-omni-agent-users-create/assets/create-users.apex.template +80 -0
  204. package/skills/service-omni-agent-users-create/references/apex-patterns.md +135 -0
  205. package/skills/service-omni-agent-users-create/references/apex-template-notes.md +40 -0
  206. package/skills/service-omni-agent-users-create/scripts/detect-and-create.sh +206 -0
  207. package/skills/service-omni-agent-users-create/scripts/detect-existing.sh +122 -0
  208. package/skills/service-omni-agent-users-create/scripts/run-create.sh +298 -0
  209. package/skills/service-omni-agent-users-create/scripts/tests/test_user_create_security.py +171 -0
  210. package/skills/service-omni-agent-work-sharing-configure/SKILL.md +78 -0
  211. package/skills/service-omni-agent-work-sharing-configure/references/api-notes.md +31 -0
  212. package/skills/service-omni-agent-work-sharing-configure/scripts/configure-and-report.sh +186 -0
  213. package/skills/service-omni-agent-work-sharing-configure/scripts/tests/_bootstrap.py +120 -0
  214. package/skills/service-omni-agent-work-sharing-configure/scripts/tests/test_agent_work_sharing_contracts.py +93 -0
  215. package/skills/service-omni-base-settings-configure/SKILL.md +77 -0
  216. package/skills/service-omni-base-settings-configure/assets/force-app/main/default/settings/OmniChannel.settings-meta.xml +8 -0
  217. package/skills/service-omni-base-settings-configure/assets/package.xml +8 -0
  218. package/skills/service-omni-base-settings-configure/assets/sfdx-project.json +12 -0
  219. package/skills/service-omni-base-settings-configure/references/api-notes.md +121 -0
  220. package/skills/service-omni-base-settings-configure/scripts/configure-and-report.sh +164 -0
  221. package/skills/service-omni-base-settings-configure/scripts/detect-existing.sh +69 -0
  222. package/skills/service-omni-channel-setup-coordinate/SKILL.md +168 -0
  223. package/skills/service-omni-channel-setup-coordinate/examples/output-templates.md +161 -0
  224. package/skills/service-omni-channel-setup-coordinate/references/gap-catalog.md +99 -0
  225. package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +1542 -0
  226. package/skills/service-omni-channel-setup-coordinate/scripts/tests/__init__.py +0 -0
  227. package/skills/service-omni-channel-setup-coordinate/scripts/tests/_bootstrap.py +223 -0
  228. package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +804 -0
  229. package/skills/service-omni-command-center-analyze/SKILL.md +84 -0
  230. package/skills/service-omni-command-center-analyze/references/api-notes.md +54 -0
  231. package/skills/service-omni-command-center-analyze/scripts/analyze.sh +198 -0
  232. package/skills/service-omni-command-center-analyze/scripts/tests/_bootstrap.py +115 -0
  233. package/skills/service-omni-command-center-analyze/scripts/tests/test_command_center_analyze_contracts.py +165 -0
  234. package/skills/service-omni-permission-set-assign/SKILL.md +88 -0
  235. package/skills/service-omni-permission-set-assign/assets/package.xml +8 -0
  236. package/skills/service-omni-permission-set-assign/references/api-notes.md +143 -0
  237. package/skills/service-omni-permission-set-assign/scripts/verify-and-assign.sh +397 -0
  238. package/skills/service-omni-presence-status-deploy/SKILL.md +87 -0
  239. package/skills/service-omni-presence-status-deploy/assets/package.xml +12 -0
  240. package/skills/service-omni-presence-status-deploy/references/api-notes.md +115 -0
  241. package/skills/service-omni-presence-status-deploy/scripts/deploy-and-report.sh +422 -0
  242. package/skills/service-omni-presence-user-config-deploy/SKILL.md +80 -0
  243. package/skills/service-omni-presence-user-config-deploy/references/api-notes.md +60 -0
  244. package/skills/service-omni-presence-user-config-deploy/scripts/deploy-and-report.sh +261 -0
  245. package/skills/service-omni-presence-user-config-deploy/scripts/tests/_bootstrap.py +106 -0
  246. package/skills/service-omni-presence-user-config-deploy/scripts/tests/test_presence_user_config_contracts.py +142 -0
  247. package/skills/service-omni-queue-deploy/SKILL.md +91 -0
  248. package/skills/service-omni-queue-deploy/references/api-notes.md +140 -0
  249. package/skills/service-omni-queue-deploy/scripts/verify-and-align.sh +470 -0
  250. package/skills/service-omni-queue-members-assign/SKILL.md +93 -0
  251. package/skills/service-omni-queue-members-assign/references/api-notes.md +144 -0
  252. package/skills/service-omni-queue-members-assign/scripts/tests/_bootstrap.py +67 -0
  253. package/skills/service-omni-queue-members-assign/scripts/tests/test_queue_members_contracts.py +73 -0
  254. package/skills/service-omni-queue-members-assign/scripts/verify-and-bind.sh +362 -0
  255. package/skills/service-omni-queue-routing-config-deploy/SKILL.md +101 -0
  256. package/skills/service-omni-queue-routing-config-deploy/references/api-notes.md +127 -0
  257. package/skills/service-omni-queue-routing-config-deploy/scripts/tests/_bootstrap.py +90 -0
  258. package/skills/service-omni-queue-routing-config-deploy/scripts/tests/test_queue_routing_config_contracts.py +70 -0
  259. package/skills/service-omni-queue-routing-config-deploy/scripts/upsert-and-report.sh +538 -0
  260. package/skills/service-omni-routing-flow-deploy/SKILL.md +111 -0
  261. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Case_Trigger.SkillsBased.flow-meta.xml +94 -0
  262. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Case_Trigger.flow-meta.xml +88 -0
  263. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_Cases.flow-meta.xml +144 -0
  264. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCall_Trigger.SkillsBased.flow-meta.xml +94 -0
  265. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCall_Trigger.flow-meta.xml +88 -0
  266. package/skills/service-omni-routing-flow-deploy/assets/force-app/main/default/flows/Omni_Route_VoiceCalls.flow-meta.xml +144 -0
  267. package/skills/service-omni-routing-flow-deploy/assets/package.xml +11 -0
  268. package/skills/service-omni-routing-flow-deploy/assets/sfdx-project.json +11 -0
  269. package/skills/service-omni-routing-flow-deploy/references/api-notes.md +265 -0
  270. package/skills/service-omni-routing-flow-deploy/scripts/deploy-and-report.sh +684 -0
  271. package/skills/service-omni-service-channel-configure/SKILL.md +83 -0
  272. package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/Cases.serviceChannel-meta.xml +9 -0
  273. package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/Incidents.serviceChannel-meta.xml +9 -0
  274. package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/MessagingSessions.serviceChannel-meta.xml +9 -0
  275. package/skills/service-omni-service-channel-configure/assets/force-app/main/default/serviceChannels/VoiceCalls.serviceChannel-meta.xml +9 -0
  276. package/skills/service-omni-service-channel-configure/assets/package.xml +11 -0
  277. package/skills/service-omni-service-channel-configure/assets/sfdx-project.json +12 -0
  278. package/skills/service-omni-service-channel-configure/references/api-notes.md +84 -0
  279. package/skills/service-omni-service-channel-configure/scripts/deploy-and-report.sh +383 -0
  280. package/skills/service-omni-sidebar-configure/SKILL.md +77 -0
  281. package/skills/service-omni-sidebar-configure/references/api-notes.md +51 -0
  282. package/skills/service-omni-sidebar-configure/scripts/enable-and-report.sh +315 -0
  283. package/skills/service-omni-sidebar-configure/scripts/tests/_bootstrap.py +142 -0
  284. package/skills/service-omni-sidebar-configure/scripts/tests/test_sidebar_contracts.py +139 -0
  285. package/skills/service-omni-skills-based-routing-configure/SKILL.md +81 -0
  286. package/skills/service-omni-skills-based-routing-configure/references/api-notes.md +50 -0
  287. package/skills/service-omni-skills-based-routing-configure/scripts/configure-and-report.sh +270 -0
  288. package/skills/service-omni-skills-based-routing-configure/scripts/tests/_bootstrap.py +120 -0
  289. package/skills/service-omni-skills-based-routing-configure/scripts/tests/test_sbr_contracts.py +129 -0
  290. package/skills/service-omni-supervisor-config-deploy/SKILL.md +97 -0
  291. package/skills/service-omni-supervisor-config-deploy/assets/force-app/main/default/omniSupervisorConfigs/Omni_Supervisor.omniSupervisorConfig-meta.xml +9 -0
  292. package/skills/service-omni-supervisor-config-deploy/assets/package.xml +8 -0
  293. package/skills/service-omni-supervisor-config-deploy/assets/sfdx-project.json +12 -0
  294. package/skills/service-omni-supervisor-config-deploy/references/api-notes.md +205 -0
  295. package/skills/service-omni-supervisor-config-deploy/scripts/deploy-and-report.sh +586 -0
  296. package/skills/service-omni-supervisor-config-deploy/scripts/tests/_bootstrap.py +153 -0
  297. package/skills/service-omni-supervisor-config-deploy/scripts/tests/test_supervisor_config_contracts.py +116 -0
  298. package/skills/service-omni-supervisor-permset-assign/SKILL.md +88 -0
  299. package/skills/service-omni-supervisor-permset-assign/references/api-notes.md +48 -0
  300. package/skills/service-omni-supervisor-permset-assign/scripts/verify-and-assign.sh +316 -0
  301. package/skills/service-omni-supervisor-surface-deploy/SKILL.md +85 -0
  302. package/skills/service-omni-supervisor-surface-deploy/references/api-notes.md +47 -0
  303. package/skills/service-omni-supervisor-surface-deploy/scripts/deploy-and-report.sh +216 -0
  304. package/skills/service-omni-supervisor-surface-deploy/scripts/tests/_bootstrap.py +95 -0
  305. package/skills/service-omni-supervisor-surface-deploy/scripts/tests/test_supervisor_surface_contracts.py +154 -0
  306. package/skills/service-omni-supervisor-users-create/SKILL.md +92 -0
  307. package/skills/service-omni-supervisor-users-create/assets/create-supervisors.apex.template +72 -0
  308. package/skills/service-omni-supervisor-users-create/references/apex-patterns.md +73 -0
  309. package/skills/service-omni-supervisor-users-create/references/apex-template-notes.md +41 -0
  310. package/skills/service-omni-supervisor-users-create/scripts/detect-and-create.sh +197 -0
  311. package/skills/service-omni-supervisor-users-create/scripts/detect-existing.sh +112 -0
  312. package/skills/service-omni-supervisor-users-create/scripts/run-create.sh +296 -0
  313. package/skills/service-omni-work-skill-routing-configure/SKILL.md +80 -0
  314. package/skills/service-omni-work-skill-routing-configure/references/api-notes.md +67 -0
  315. package/skills/service-omni-work-skill-routing-configure/scripts/configure-and-report.sh +262 -0
  316. package/skills/service-omni-work-skill-routing-configure/scripts/tests/_bootstrap.py +121 -0
  317. package/skills/service-omni-work-skill-routing-configure/scripts/tests/test_work_skill_routing_contracts.py +161 -0
@@ -0,0 +1,85 @@
1
+ # KAM & Sprint Config-Record Edits (Stage 2, Step 14)
2
+
3
+ After the LifeSciConfigRecords deploy (Step 7) succeeds and the 10 KAM StandardValueSets are confirmed (Step 1), set the picklist values in the two org-level config records, then re-deploy. Config deploys are **upsert** — re-deploying updates the existing records, it does not duplicate them.
4
+
5
+ Both files live under `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord/lifeSciConfigRecords/`:
6
+ - `KAMSettings_OrgLevel.lifeSciConfigRecord`
7
+ - `SprintSettings_OrgLevel.lifeSciConfigRecord`
8
+
9
+ Each setting is a `<fieldValues>` block. A single-value picklist uses `<dataType>PICKLIST</dataType>` + `<picklistValue>…</picklistValue>`; a multi-select uses `<dataType>MULTIPICKLIST</dataType>` + `<longTextValue>…</longTextValue>` (values `;`-separated). Do **not** invent new elements — only change the value inside the existing `<picklistValue>` / `<longTextValue>` tag.
10
+
11
+ ---
12
+
13
+ ## KAMSettings_OrgLevel — six single-value picklist fields
14
+
15
+ Each value MUST be exactly **one** value drawn from the noted StandardValueSet (confirmed in Step 1). The starter file ships with sensible defaults; confirm each with the admin and change only if they differ.
16
+
17
+ | `<fieldName>` | Source StandardValueSet | Cardinality | Default in file | Element to edit |
18
+ |---------------|------------------------|-------------|-----------------|-----------------|
19
+ | `StatusValueForAP` | `AccountPlanStatus` | ONE | `Completed` | `<picklistValue>` |
20
+ | `StatusValueForAPO` | `AccPlanObjectiveStatus` | ONE | `Completed` | `<picklistValue>` |
21
+ | `NotStartedStatusValueForAP` | `ActionPlanState` | ONE | `Not Started` | `<picklistValue>` |
22
+ | `CompletionStatusValueForAP` | `ActionPlanState` | ONE | `Completed` | `<picklistValue>` |
23
+ | `CompletionStatusValueForTBP` | `TerritoryBusinessPlanStatus` | ONE | `Completed` | `<picklistValue>` |
24
+ | `CompletionStatusValueForGA` | `GoalAssignmentStatus` | ONE | `Completed` | `<picklistValue>` |
25
+
26
+ Example block (do not change `dataType`/`fieldName`/`hasBooleanValue`):
27
+
28
+ ```xml
29
+ <fieldValues>
30
+ <dataType>PICKLIST</dataType>
31
+ <fieldName>StatusValueForAP</fieldName>
32
+ <hasBooleanValue>false</hasBooleanValue>
33
+ <picklistValue>Completed</picklistValue>
34
+ </fieldValues>
35
+ ```
36
+
37
+ Leave the trailing `<isActive>`, `<isOrgLevel>`, `<lifeSciConfigCategory>KAMSettings</lifeSciConfigCategory>`, and `<masterLabel>KAMSettings_OrgLevel</masterLabel>` elements as-is.
38
+
39
+ ---
40
+
41
+ ## SprintSettings_OrgLevel — one multi-select field
42
+
43
+ | `<fieldName>` | Source StandardValueSet | Cardinality | Default in file | Element to edit |
44
+ |---------------|------------------------|-------------|-----------------|-----------------|
45
+ | `StatusValueForSprint` | `SprintStatus` | ONE OR MORE (`;`-separated) | `Completed` | `<longTextValue>` |
46
+
47
+ `StatusValueForSprint` is a `MULTIPICKLIST` — its value goes in **`<longTextValue>`**, not `<picklistValue>`. To select more than one status, separate them with a semicolon and no surrounding spaces:
48
+
49
+ ```xml
50
+ <fieldValues>
51
+ <dataType>MULTIPICKLIST</dataType>
52
+ <fieldName>StatusValueForSprint</fieldName>
53
+ <hasBooleanValue>false</hasBooleanValue>
54
+ <longTextValue>In Progress;Completed</longTextValue>
55
+ </fieldValues>
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Deploy the edited config records
61
+
62
+ Re-deploy the whole `lifeSciConfigRecord` directory (upsert-safe) from inside the project root:
63
+
64
+ ```bash
65
+ sf project deploy start -d .lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord --target-org <org>
66
+ ```
67
+
68
+ Confirm **zero component failures** in the deploy result. Then verify the values landed:
69
+
70
+ ```bash
71
+ sf data query --query "SELECT Id, MasterLabel FROM LifeSciConfigRecord WHERE MasterLabel IN ('KAMSettings_OrgLevel','SprintSettings_OrgLevel')" --target-org <org> --json
72
+ ```
73
+
74
+ Both records must be present. (The individual field values are stored as child `LifeSciConfigRecordDetail`/field-value rows; the successful upsert deploy with 0 failures is the authoritative confirmation the picklist values were written.)
75
+
76
+ ---
77
+
78
+ ## Gotchas
79
+
80
+ | Issue | Resolution |
81
+ |-------|------------|
82
+ | Edit didn't take effect | You may have edited the wrong element — single picklists use `<picklistValue>`, the Sprint multi-select uses `<longTextValue>`. Re-edit and re-deploy |
83
+ | Multiple Sprint statuses not applying | Separate them with `;` (no spaces) inside a single `<longTextValue>`; do not add extra `<fieldValues>` blocks for the same field |
84
+ | Value rejected on deploy | The value must exactly match an entry in the source StandardValueSet (confirmed in Step 1); check spelling/casing |
85
+ | Config records fail with `Enter an assignment level and an assignment ID.` | The `LSC Custom Profile` was absent — this should not happen at Step 14 (Step 7 already ran); re-confirm Step 6/7 succeeded |
@@ -0,0 +1,112 @@
1
+ # LifeSci Metadata Deploy Reference
2
+
3
+ ## LifeSciConfigRecords (Step 7)
4
+
5
+ LifeSciConfigCategories and LifeSciConfigRecords use standard Salesforce Metadata API deployment. The folder `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord/` contains a `package.xml` that declares both types.
6
+
7
+ ```bash
8
+ sf project deploy start -d .lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord --target-org <org>
9
+ ```
10
+
11
+ This deploys:
12
+ - 52 LifeSciConfigCategory files from `lifeSciConfigCategories/`
13
+ - 249 LifeSciConfigRecord files from `lifeSciConfigRecords/`
14
+
15
+ The `package.xml` at `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord/package.xml` contains:
16
+ ```xml
17
+ <?xml version="1.0" encoding="UTF-8"?>
18
+ <Package xmlns="http://soap.sforce.com/2006/04/metadata">
19
+ <types>
20
+ <members>*</members>
21
+ <name>LifeSciConfigCategory</name>
22
+ </types>
23
+ <types>
24
+ <members>*</members>
25
+ <name>LifeSciConfigRecord</name>
26
+ </types>
27
+ <version>65.0</version>
28
+ </Package>
29
+ ```
30
+
31
+ ### Troubleshooting LifeSciConfigRecords
32
+
33
+ | Error | Cause | Fix |
34
+ |-------|-------|-----|
35
+ | "Enter an assignment level and an assignment ID" | Profile referenced in assignments doesn't exist | Ensure Step 6 (skeleton profile) deployed successfully |
36
+ | "Unable to find an enum or id that matches the value provided for: ObjectValue" | Entity referenced in a DbSchema record is not available | Check which entity the failing record references and ensure it's enabled on the org |
37
+
38
+ ---
39
+
40
+ ## LifeSciMetadataRecords (Step 8)
41
+
42
+ LifeSciMetadataRecords are stored as JSON files and deployed via the Composite Tree REST API (not metadata deploy). The files are at `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciMetadataRecord/`.
43
+
44
+ ### Deploy Order (MUST follow this sequence)
45
+
46
+ 1. **LifeSciMetadataCategory.json** — Creates category records first
47
+ 2. **LifeSciMetadataRecord.json** — Records reference categories via `LifeScienceMetadataCategoryId`
48
+ 3. **LifeSciMetadataFieldValue.json** — Field values reference records
49
+
50
+ ### Deploy Command — USE THE PLAN FILE (required)
51
+
52
+ The three JSON files use cross-file `@references`: `LifeSciMetadataRecord.json` references categories via `"LifeScienceMetadataCategoryId": "@<categoryRefId>"`, and `LifeSciMetadataFieldValue.json` references records. Importing the files individually with `--files` does **not** resolve these references and will fail. The `LifeSciMetadataCategory-plan.json` plan file sequences all three sobjects with `saveRefs`/`resolveRefs` set correctly, so a single `--plan` import resolves everything.
53
+
54
+ Run from inside the `lifeSciMetadataRecord/` directory (plan file paths are relative to it):
55
+
56
+ ```bash
57
+ cd .lsc-starter-config/LSStarterConfig/LSConfig/lifeSciMetadataRecord
58
+ sf data import tree --plan LifeSciMetadataCategory-plan.json --target-org <org> --json
59
+ ```
60
+
61
+ Verified result: 101 records imported (10 LifeSciMetadataCategory + 10 LifeSciMetadataRecord + 81 LifeSciMetadataFieldValue).
62
+
63
+ The plan file contents:
64
+ ```json
65
+ [
66
+ { "sobject": "LifeSciMetadataCategory", "saveRefs": true, "resolveRefs": false, "files": ["LifeSciMetadataCategory.json"] },
67
+ { "sobject": "LifeSciMetadataRecord", "saveRefs": true, "resolveRefs": true, "files": ["LifeSciMetadataRecord.json"] },
68
+ { "sobject": "LifeSciMetadataFieldValue", "saveRefs": true, "resolveRefs": true, "files": ["LifeSciMetadataFieldValue.json"] }
69
+ ]
70
+ ```
71
+
72
+ ### If the plan import fails
73
+
74
+ The command uses the Composite Tree API. On a reference-resolution error:
75
+ 1. Confirm you ran from inside the `lifeSciMetadataRecord/` directory (the plan uses relative file paths)
76
+ 2. Confirm the `@<refId>` values in Records/FieldValues match `referenceId`s declared earlier in the plan sequence
77
+ 3. Do NOT fall back to per-file `--files` imports — they cannot resolve the cross-file references
78
+
79
+ ### Data Structure
80
+
81
+ **LifeSciMetadataCategory.json** structure:
82
+ ```json
83
+ {
84
+ "records": [
85
+ {
86
+ "attributes": { "type": "LifeSciMetadataCategory", "referenceId": "..." },
87
+ "Name": "...",
88
+ "CategoryLabel": "...",
89
+ "Category": "...",
90
+ "Type": "Hierarchical|List"
91
+ }
92
+ ]
93
+ }
94
+ ```
95
+
96
+ **LifeSciMetadataRecord.json** structure:
97
+ ```json
98
+ {
99
+ "records": [
100
+ {
101
+ "attributes": { "type": "LifeSciMetadataRecord", "referenceId": "..." },
102
+ "LifeScienceMetadataCategoryId": "@<categoryRefId>",
103
+ "IsActive": true,
104
+ "IsOrgLevel": true,
105
+ "Name": "...",
106
+ "RecordApiName": "...",
107
+ "Type": null
108
+ }
109
+ ]
110
+ }
111
+ ```
112
+ </content>
@@ -0,0 +1,202 @@
1
+ # Stage 2 — Starter Config Deploy (KAM)
2
+
3
+ Deploys the Life Sciences Cloud Starter Configuration to a target org in a sequenced, recoverable workflow with interactive component selection, then writes the KAM- and Sprint-specific picklist values into the org-level config records. This is Stage 2 of the `life-sciences-kam-coordinate` workflow; the coordinator invokes it after prerequisites (Stage 1) pass.
4
+
5
+ ## Stage Scope
6
+
7
+ - **In scope**: Deploying all starter config components (StandardValueSets, objects, productSpecificationTypes, productSpecificationRecTypes, quickActions, profiles, LifeSciConfigRecords, LifeSciMetadataRecords, trigger handlers, page layouts, flexipages, application file updates) plus the KAM/Sprint config-record picklist edits
8
+ - **Out of scope**: Territory setup (Stage 3), participant role/sprint records (Stage 4), data & plan templates (Stage 5), user provisioning (Stage 6), prerequisite validation (Stage 1), package installation
9
+
10
+ ---
11
+
12
+ ## Required Inputs
13
+
14
+ - **Target org**: The org alias or username to deploy to (from `sf config get target-org` or user-specified)
15
+
16
+ ---
17
+
18
+ ## Source Components (must be present in the CWD)
19
+
20
+ All components and data deployed in this stage come from the `.lsc-starter-config/LSStarterConfig/` subtree of <https://github.com/SalesforceLabs/LSStarterConfig.git>. **This stage does NOT download or delete that folder** — it expects `.lsc-starter-config/LSStarterConfig/` to already be present in the CWD. The coordinator (`life-sciences-kam-coordinate`) downloads it once at the start of the run and deletes it once at the end.
21
+
22
+ | Subfolder | Used by |
23
+ |---|---|
24
+ | `.lsc-starter-config/LSStarterConfig/PackageComponents/` | Steps 1–6, 9–13 (standardValueSets, objects, product specs, quick actions, profiles, layouts, flexipages, application) |
25
+ | `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciConfigRecord/` | Step 7 (LifeSciConfigCategories + LifeSciConfigRecords) |
26
+ | `.lsc-starter-config/LSStarterConfig/LSConfig/lifeSciMetadataRecord/` | Step 8 (LifeSciMetadataRecords via plan file) |
27
+
28
+ **`.lsc-starter-config/LSStarterConfig/` contains its own `sfdx-project.json`** (pins `sourceApiVersion: 65.0`) — that is the project root all deploy steps must run from (see the working-directory note in Phase 1).
29
+
30
+ > **If `.lsc-starter-config/LSStarterConfig/` is not present, stop — do NOT download it here.** This embedded stage is a pure consumer of the shared folder; the coordinator is the sole owner of the single download (start) and single delete (end). Report that the shared config folder is missing and must be provisioned by the coordinator, then halt.
31
+
32
+ ---
33
+
34
+ ## Deployment Order (MANDATORY — do not reorder)
35
+
36
+ Each step depends on artifacts created by earlier steps. Always execute 1 → 13 in sequence, then run the KAM/Sprint config-record edits (Step 14). Do not skip a dependency step, and do not run a later step until the step it depends on has verified success.
37
+
38
+ The critical dependency chain:
39
+
40
+ ```text
41
+ Objects + RecordTypes (Step 2)
42
+ └── LSC Custom Profile (Step 6) # profile references RecordTypes; fails if objects not deployed first
43
+ └── LifeSciConfigRecords (Step 7) # 177 records assign config to the profile; fail if profile absent
44
+ └── KAM/Sprint config-record edits (Step 14) # update lifeSciConfigRecord picklist values
45
+ ```
46
+
47
+ | Order | Step | Depends on | Verification gate before proceeding |
48
+ |-------|------|-----------|--------------------------------------|
49
+ | 1 | StandardValueSets | — | **Values confirmed with admin (3 grouped confirmations) BEFORE deploy**, then deploy succeeded |
50
+ | 2 | Objects (incl. RecordTypes) | — | Deploy succeeded; RecordTypes queryable |
51
+ | 3 | ProductSpecificationTypes | Objects | Deploy succeeded |
52
+ | 4 | ProductSpecificationRecTypes | ProductSpecificationTypes | Deploy succeeded |
53
+ | 5 | QuickActions | Objects | Deploy succeeded |
54
+ | 6 | LSC Custom Profile (skeleton) | Objects/RecordTypes | **Query the org to confirm the profile exists** |
55
+ | 7 | LifeSciConfigRecords | **Profile (Step 6)** | **Profile confirmed present before running** |
56
+ | 8 | LifeSciMetadataRecords | LifeSciConfigRecords | Categories → Records → FieldValues in order |
57
+ | 9 | TriggerHandlers | Objects | Handlers exist |
58
+ | 10 | PageLayouts (KAM: 4) | Objects | Deploy succeeded |
59
+ | 11 | ProfileLayoutAssignments | PageLayouts + Profile | Only assign deployed layouts |
60
+ | 12 | FlexiPages (KAM: 6) | Objects | Deploy succeeded |
61
+ | 13 | ApplicationUpdate | FlexiPages | Only reference deployed flexipages |
62
+ | 14 | KAM/Sprint config-record edits | LifeSciConfigRecords (Step 7) | Both config records updated & re-deployed |
63
+
64
+ > **Why the skeleton profile first (Step 6):** the full `LSC Custom Profile` references RecordTypes and layouts and fails to deploy standalone. The skeleton has no layout assignments; assignments are added in Step 11. Deploying config records (Step 7) before the profile exists fails every profile-assigned record with `Enter an assignment level and an assignment ID.`
65
+
66
+ ---
67
+
68
+ ## State Tracking
69
+
70
+ Maintain a deployment state object throughout to enable pause/resume and partial-deploy recovery. Read `references/stage-2-starter-config-state-tracking.md` for the full state-object schema, the failure/recovery prompt, and the progress-display formats. On failure at any step, present the recovery options and wait for the user's choice before continuing.
71
+
72
+ ---
73
+
74
+ ## Workflow
75
+
76
+ ### Phase 1 — Deploy Foundation Components (Steps 1–6)
77
+
78
+ Read `references/stage-2-starter-config-deploy-commands.md` for exact CLI commands for each step.
79
+
80
+ > **Working directory (required for ALL deploy steps 1–13):** Run every `sf project deploy start` from **inside `.lsc-starter-config/LSStarterConfig/`** (the directory holding `sfdx-project.json`). `sf` only searches the CWD/ancestors for `sfdx-project.json`, which pins `sourceApiVersion: 65.0`. Run elsewhere and `sf` silently falls back to API 60.0, and the profile deploys (Steps 6, 11) fail with `Property 'viewAllFields' not valid in version 60.0`. `cd .lsc-starter-config/LSStarterConfig` first; once inside, drop that prefix from `--source-dir`.
81
+
82
+ **Step 1: Confirm the picklist values with the admin, THEN deploy StandardValueSets.** Confirmation happens *before* the deploy: the admin approves (or edits) the values first, then the confirmed values are written into the `*.standardValueSet-meta.xml` files and deployed. Step 1 is the single source of truth for both the org's picklists and the Step 14 config-record edits, so it must run up front.
83
+
84
+ Present the values in **three business-framed confirmations** — grouped by the objects the admin recognizes, not one-by-one by metadata API name. For each group, fetch the current values (from the StandardValueSet files, or query the org) and show them alongside the setup-guide example defaults; the admin either accepts the defaults or edits any of them.
85
+
86
+ **Confirmation A — Account Plan Stakeholder fields.** Three fields on the Account Plan Stakeholder object:
87
+
88
+ | Field (admin-facing) | StandardValueSet | Setup-guide example values |
89
+ |---|---|---|
90
+ | Role Type | `StakeholderRoleType` | Internal / External |
91
+ | Influencer Level | `StakeholderInfluenceLevel` | District / National / International |
92
+ | Strength | `StakeholderStrength` | Low / Medium / High |
93
+
94
+ Example prompt: *"On the Account Plan Stakeholder object I'll set Role Type, Influencer Level, and Strength. The setup guide suggests Internal/External · District/National/International · Low/Medium/High. Use those, or define your own?"*
95
+
96
+ **Confirmation B — Plan status values.** The status values the plans use:
97
+
98
+ | Field (admin-facing) | StandardValueSet | Setup-guide example values |
99
+ |---|---|---|
100
+ | Territory Business Plan status | `TerritoryBusinessPlanStatus` | Not Started / In Progress / Completed / Deferred |
101
+ | Account Plan status | `AccountPlanStatus` | Not Started / In Progress / Completed / Deferred |
102
+ | Account Plan Objective status | `AccPlanObjectiveStatus` | Not Started / In Progress / Completed / Deferred |
103
+ | Sprint status | `SprintStatus` | Not Started / In Progress / Completed / Deferred |
104
+
105
+ Example prompt: *"Next, the status values for Territory Business Plan, Account Plan, Account Plan Objective, and Sprint — Not Started / In Progress / Completed / Deferred. Use those, or define your own?"*
106
+
107
+ **Confirmation C — Assessment Task category.** Shown separately, after the status values:
108
+
109
+ | Field (admin-facing) | StandardValueSet | Setup-guide example values |
110
+ |---|---|---|
111
+ | Assessment Task category | `AssessmentTaskCategory` | Approve / Survey / Claim |
112
+
113
+ Example prompt: *"Finally, the Assessment Task categories — Approve / Survey / Claim. Use those, or define your own?"*
114
+
115
+ > **The remaining two StandardValueSets — `ActionPlanState` and `GoalAssignmentStatus` — deploy with their shipped defaults; do NOT prompt the admin for them.** They are internal plumbing consumed only by the Step 14 config records (`NotStartedStatusValueForAP` / `CompletionStatusValueForAP` ← `ActionPlanState`; `CompletionStatusValueForGA` ← `GoalAssignmentStatus`), not object-level picklists the admin manages. Their shipped defaults already include the "Not Started" / "Completed" members Step 14 needs.
116
+
117
+ After all three confirmations, write any edited values into the corresponding `*.standardValueSet-meta.xml` files, then deploy the StandardValueSets directory (command in `references/stage-2-starter-config-deploy-commands.md`). The confirmed values from Confirmations A, B, and C feed the Step 14 config-record edits.
118
+
119
+ > **Keep Step 14 defaults valid:** the Step 14 config records default to `Completed` / `Not Started` members. If the admin edits a status set to remove either member, carry the admin's replacement through to Step 14 so the config-record values stay members of the deployed set.
120
+
121
+ Steps 2–9 are unchanged from the shared deploy sequence — see `references/stage-2-starter-config-deploy-commands.md`, `references/stage-2-starter-config-lifesci-metadata-deploy.md` (Step 8), and `references/stage-2-starter-config-trigger-handlers.md` (Step 9). The Step 6 profile-exists gate and the Step 7 / Step 8 / Step 9 STOP-GATEs (0 config failures; 101 imported records; all 28 handlers active) apply exactly as written there.
122
+
123
+ ### Phase 4 — Layout Deployment (Steps 10–11) — KAM: 4 layouts (deployed automatically)
124
+
125
+ **Step 10: Deploy Page Layouts.** Deploy all four KAM layouts automatically — do **NOT** ask the admin which to deploy. These four are the complete KAM layout set, so there is nothing to choose among; a selection prompt only adds friction. The four deployed:
126
+
127
+ ```markdown
128
+ Page Layouts deployed (KAM):
129
+ 1. Account - HCO Account Layout
130
+ 2. PersonAccount - Person Account HCP Layout
131
+ 3. HealthcareProvider - Healthcare Provider Layout
132
+ 4. ActionPlan - Action Plan Layout
133
+ ```
134
+
135
+ Copy all four layouts to a temp directory and deploy.
136
+
137
+ **Step 11: Update Profile Layout Assignments.** Add `<layoutAssignments>` for each deployed layout to BOTH profile files under `.lsc-starter-config/LSStarterConfig/PackageComponents/profiles/SkeletonProfile/` (`LSC Custom Profile.profile-meta.xml`, `Admin.profile-meta.xml`). This is a mechanical consequence of the Step 10 selection — do NOT print the block for review or ask to confirm the profile edit. Mapping + full XML: `references/stage-2-starter-config-profile-layout-assignments.md`. Then re-deploy the profiles.
138
+
139
+ ### Phase 5 — FlexiPage Deployment (Steps 12–13) — KAM: 6 flexipages (deployed automatically)
140
+
141
+ **Step 12: Deploy FlexiPages.** Deploy all six KAM flexipages automatically — do **NOT** ask the admin which to deploy. These six are the complete KAM flexipage set. The six deployed:
142
+
143
+ ```markdown
144
+ FlexiPages deployed (KAM):
145
+ 1. Home_Page_LSC_Default
146
+ 2. LSCAccountHCP
147
+ 3. Contact_Point_Address_Record_Page
148
+ 4. Account_Plan_Objective_Record_Page3
149
+ 5. Account_Plan3
150
+ 6. Goal_Definition1
151
+ ```
152
+
153
+ Deploy all six flexipages from a temp directory.
154
+
155
+ **Step 13: Update and Deploy Application File.** Keep only `<actionOverrides>`/`<profileActionOverrides>` matching the deployed flexipages. Mapping: `references/stage-2-starter-config-application-flexipage-mapping.md`. Deploy the updated application file.
156
+
157
+ ### Phase 6 — KAM & Sprint Config Records (Step 14)
158
+
159
+ **Step 14: Update the KAM and Sprint org-level config records.** Using the values confirmed in Step 1, edit the picklist values in `KAMSettings_OrgLevel.lifeSciConfigRecord` and `SprintSettings_OrgLevel.lifeSciConfigRecord`, then re-deploy the config records. Full field-by-field mapping and deploy command: **`references/stage-2-starter-config-kam-config-records.md`**.
160
+
161
+ > **Do not delete the `.lsc-starter-config/LSStarterConfig/` folder** — this stage neither downloads nor removes it. The coordinator owns the single download (start) and single delete (end).
162
+
163
+ ---
164
+
165
+ ## Rules / Constraints
166
+
167
+ | Constraint | Rationale |
168
+ |-----------|-----------|
169
+ | Require `.lsc-starter-config/LSStarterConfig/` present in CWD; do NOT download or delete it | The shared folder's download/cleanup is owned by the coordinator (one download at start, one delete at end) |
170
+ | Run deploys from inside `.lsc-starter-config/LSStarterConfig/` (API 65.0) | Running elsewhere falls back to API 60.0 and profile deploys fail |
171
+ | Deploy strictly in order 1→14; never reorder or skip a dependency step | Later steps consume earlier artifacts. Key chain: Objects (2) → Profile (6) → Config Records (7) → KAM/Sprint edits (14) |
172
+ | Confirm the profile exists (query the org) before Step 7 | 177 config records assign to the profile and fail per-record if it is absent |
173
+ | Confirm the KAM StandardValueSet values with the admin BEFORE deploying them (Step 1), in three business-framed groups; `ActionPlanState`/`GoalAssignmentStatus` keep shipped defaults (no prompt) | The confirmed values seed both the org picklists and the Step 14 config-record edits, so they must be settled before deploy |
174
+ | Deploy the full KAM subset of layouts (4) and flexipages (6) automatically — do NOT prompt to select | These are the complete KAM sets; there is nothing to choose among, so a selection prompt only adds friction |
175
+ | Use --target-org for every CLI command | Explicit org targeting avoids accidental deployments |
176
+
177
+ ---
178
+
179
+ ## Gotchas
180
+
181
+ | Issue | Resolution |
182
+ |-------|------------|
183
+ | LifeSciConfigRecord deploy fails with `Enter an assignment level and an assignment ID.` | The `LSC Custom Profile` is not in the org. Ensure Step 6 succeeded (query returns 1), then re-run Step 7 (upsert-safe) |
184
+ | Standalone profile deploy fails with `no RecordType named Account.Business found` | Deploy Objects (Step 2) first; use the skeleton profile at Step 6 |
185
+ | Profile deploy fails with `Property 'viewAllFields' not valid in version 60.0` | Command was run outside `.lsc-starter-config/LSStarterConfig/`; `cd` in and re-run (project pins API 65.0) |
186
+ | `sObject type 'lsc4ce__TriggerHandler__c' is not supported` | Handlers are the Tooling entity `LifeScienceTriggerHandler`; query/update with `--use-tooling-api` |
187
+ | Metadata records fail with reference-resolution error | Use the `--plan LifeSciMetadataCategory-plan.json` import, not per-file `--files` |
188
+ | KAM/Sprint config edit not taking effect | Config records are upsert on deploy — confirm you edited the correct `attributes`/`picklistValues` and re-deployed the `lifeSciConfigRecord` directory (see the config-records reference) |
189
+
190
+ ---
191
+
192
+ ## Reference File Index
193
+
194
+ | File | When to read |
195
+ |------|-------------|
196
+ | `references/stage-2-starter-config-state-tracking.md` | Throughout — deployment state schema, failure/recovery prompt, progress formats |
197
+ | `references/stage-2-starter-config-deploy-commands.md` | Phase 1 — exact CLI commands and expected outputs |
198
+ | `references/stage-2-starter-config-lifesci-metadata-deploy.md` | Step 8 — JSON deploy sequence and commands |
199
+ | `references/stage-2-starter-config-trigger-handlers.md` | Step 9 — handler names and activation method |
200
+ | `references/stage-2-starter-config-profile-layout-assignments.md` | Step 11 — KAM 4-layout mapping for profile updates |
201
+ | `references/stage-2-starter-config-application-flexipage-mapping.md` | Step 13 — KAM 6-flexipage content mapping |
202
+ | `references/stage-2-starter-config-kam-config-records.md` | Step 14 — KAM/Sprint picklist config-record edits |
@@ -0,0 +1,67 @@
1
+ # Profile Layout Assignments Reference (KAM)
2
+
3
+ ## Overview
4
+
5
+ After the KAM page layouts are deployed (Step 10), the skeleton profile files must be updated with `<layoutAssignments>` entries that map each deployed layout to its object and record types.
6
+
7
+ Both profile files under `.lsc-starter-config/LSStarterConfig/PackageComponents/profiles/SkeletonProfile/` must be updated:
8
+ - `LSC Custom Profile.profile-meta.xml`
9
+ - `Admin.profile-meta.xml`
10
+
11
+ ## The Four KAM Layouts
12
+
13
+ For the KAM workflow, only these four layouts are offered and confirmed with the user (see `stage-2-starter-config-overview.md`, Step 10). Their object/record-type mappings:
14
+
15
+ | Layout File | Object | Record Type(s) |
16
+ |-------------|--------|----------------|
17
+ | Account-HCO Account Layout | Account | Health_Care_Organization |
18
+ | PersonAccount-Person Account HCP Layout | PersonAccount | Health_Care_Provider, PersonAccount |
19
+ | HealthcareProvider-Healthcare Provider Layout | HealthcareProvider | Health_Care_Organization, Health_Care_Provider |
20
+ | ActionPlan-Action Plan Layout | ActionPlan | — (no record types; profile default) |
21
+
22
+ ## XML Format for layoutAssignments
23
+
24
+ Insert these entries directly, right before the closing `</Profile>` tag in each file. This is a mechanical edit driven by the Step 10 layout selection — do not show the block for review or ask the user to confirm the profile edit (see the Step 11 note in `overview.md`). Placement inside `<Profile>` is not order-sensitive; before `</Profile>` is always valid.
25
+
26
+ ## Full layoutAssignments Block (all four KAM layouts)
27
+
28
+ If all four KAM layouts are deployed, add these entries to BOTH profiles:
29
+
30
+ ```xml
31
+ <layoutAssignments>
32
+ <layout>Account-HCO Account Layout</layout>
33
+ <recordType>Account.Health_Care_Organization</recordType>
34
+ </layoutAssignments>
35
+ <layoutAssignments>
36
+ <layout>PersonAccount-Person Account HCP Layout</layout>
37
+ <recordType>PersonAccount.Health_Care_Provider</recordType>
38
+ </layoutAssignments>
39
+ <layoutAssignments>
40
+ <layout>PersonAccount-Person Account HCP Layout</layout>
41
+ <recordType>PersonAccount.PersonAccount</recordType>
42
+ </layoutAssignments>
43
+ <layoutAssignments>
44
+ <layout>HealthcareProvider-Healthcare Provider Layout</layout>
45
+ <recordType>HealthcareProvider.Health_Care_Organization</recordType>
46
+ </layoutAssignments>
47
+ <layoutAssignments>
48
+ <layout>HealthcareProvider-Healthcare Provider Layout</layout>
49
+ <recordType>HealthcareProvider.Health_Care_Provider</recordType>
50
+ </layoutAssignments>
51
+ <layoutAssignments>
52
+ <layout>ActionPlan-Action Plan Layout</layout>
53
+ </layoutAssignments>
54
+ ```
55
+
56
+ > The `ActionPlan-Action Plan Layout` entry has **no `<recordType>`** — ActionPlan is a standard object with no record types in the starter config, so the assignment sets the profile's default ActionPlan layout. A `<recordType>` child here would fail the profile deploy with an invalid-record-type error.
57
+
58
+ ## Selective Assignment
59
+
60
+ If the user confirmed only a subset of the four layouts, include only the `<layoutAssignments>` entries for the confirmed layouts (all record-type entries for each). Before deploying, count the `<layoutAssignments>` blocks in each profile file against this reference for the deployed set — a missing assignment does not fail the deploy but silently leaves that object rendering the wrong layout for the profile.
61
+
62
+ ## Deploy Updated Profiles
63
+
64
+ After adding layout assignments, deploy both profiles:
65
+ ```bash
66
+ sf project deploy start --source-dir .lsc-starter-config/LSStarterConfig/PackageComponents/profiles/SkeletonProfile --target-org <org>
67
+ ```
@@ -0,0 +1,65 @@
1
+ # Deployment State Tracking
2
+
3
+ Maintain a deployment state object throughout the workflow. This enables pause/resume and partial-deploy recovery.
4
+
5
+ ```text
6
+ State = {
7
+ targetOrg: string,
8
+ steps: [
9
+ { name: "StandardValueSets", status: "pending|in-progress|done|failed", detail?: string },
10
+ { name: "Objects", status: "pending|in-progress|done|failed", detail?: string },
11
+ { name: "ProductSpecificationTypes", status: "pending|in-progress|done|failed", detail?: string },
12
+ { name: "ProductSpecificationRecTypes", status: "pending|in-progress|done|failed", detail?: string },
13
+ { name: "QuickActions", status: "pending|in-progress|done|failed", detail?: string },
14
+ { name: "SkeletonProfile", status: "pending|in-progress|done|failed", detail?: string },
15
+ { name: "LifeSciConfigRecords", status: "pending|in-progress|done|failed", detail?: string },
16
+ { name: "LifeSciMetadataRecords", status: "pending|in-progress|done|failed", detail?: string },
17
+ { name: "TriggerHandlers", status: "pending|in-progress|done|failed", detail?: string },
18
+ { name: "PageLayouts", status: "pending|in-progress|done|failed", selected?: [], deployed?: [], detail?: string },
19
+ { name: "ProfileLayoutAssignments", status: "pending|in-progress|done|failed", detail?: string },
20
+ { name: "FlexiPages", status: "pending|in-progress|done|failed", selected?: [], deployed?: [], detail?: string },
21
+ { name: "ApplicationUpdate", status: "pending|in-progress|done|failed", detail?: string }
22
+ ]
23
+ }
24
+ ```
25
+
26
+ On failure at any step, show:
27
+
28
+ ```text
29
+ Deployment paused at step: <StepName>
30
+ Completed: <N>/<Total> steps
31
+ Failed component: <component-name>
32
+ Error: <error-message>
33
+
34
+ Options:
35
+ 1. Retry failed step
36
+ 2. Skip and continue
37
+ 3. Roll back (where applicable)
38
+ ```
39
+
40
+ Wait for user choice before continuing.
41
+
42
+ ## Progress Display
43
+
44
+ After each step completes, display progress:
45
+
46
+ ```text
47
+ [done] Step 1/13: StandardValueSets — deployed
48
+ [done] Step 2/13: Objects — deployed
49
+ [done] Step 3/13: ProductSpecificationTypes — deployed
50
+ [current] Step 4/13: ProductSpecificationRecTypes — in progress...
51
+ [pending] Step 5/13: QuickActions — pending
52
+ ```
53
+
54
+ At the end, show final summary:
55
+
56
+ ```text
57
+ LSC Starter Config Deployment Complete
58
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
59
+ 13/13 steps completed successfully
60
+ - 14 layouts deployed (user selected: all)
61
+ - 8 flexipages deployed (user selected: all)
62
+ - 28 trigger handlers activated
63
+ - Application file updated for selected flexipages
64
+ ```
65
+ </content>