@salesforce/b2c-dx-mcp 3.2.1 → 3.4.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 (333) hide show
  1. package/bin/run.js +5 -9
  2. package/content/guidance/b2c/b2c-hooks/references/ORDER-HOOK-LIFECYCLE.md +1 -1
  3. package/content/guidance/b2c/b2c-onboarding/SKILL.md +4 -4
  4. package/content/guidance/b2c/b2c-ordering/SKILL.md +2 -2
  5. package/content/guidance/b2c/b2c-querying-data/SKILL.md +2 -2
  6. package/content/guidance/b2c/b2c-scapi-admin/SKILL.md +3 -3
  7. package/content/guidance/b2c/b2c-scapi-admin/references/CLIENT-EXAMPLES.md +4 -4
  8. package/content/guidance/b2c/b2c-scapi-shopper/SKILL.md +6 -6
  9. package/content/guidance/b2c/b2c-scapi-shopper/references/CLIENT-EXAMPLES.md +8 -9
  10. package/content/guidance/b2c-cli/b2c-cip/SKILL.md +3 -3
  11. package/content/guidance/b2c-cli/b2c-cip/references/SALES_ANALYSIS.md +1 -1
  12. package/content/guidance/b2c-cli/b2c-config/SKILL.md +54 -25
  13. package/content/guidance/b2c-cli/b2c-content/SKILL.md +1 -1
  14. package/content/guidance/b2c-cli/b2c-debug/SKILL.md +1 -1
  15. package/content/guidance/b2c-cli/b2c-docs/SKILL.md +23 -2
  16. package/content/guidance/b2c-cli/b2c-ecdn/SKILL.md +2 -0
  17. package/content/guidance/b2c-cli/b2c-ecdn/references/ADVANCED.md +1 -1
  18. package/content/guidance/b2c-cli/b2c-job/SKILL.md +9 -3
  19. package/content/guidance/b2c-cli/b2c-job/references/IMPORT.md +1 -1
  20. package/content/guidance/b2c-cli/b2c-job/references/RUN-AND-MONITOR.md +35 -6
  21. package/content/guidance/b2c-cli/b2c-metrics/SKILL.md +1 -1
  22. package/content/guidance/b2c-cli/b2c-mrt/SKILL.md +3 -3
  23. package/content/guidance/b2c-cli/b2c-scapi-custom/SKILL.md +1 -1
  24. package/content/guidance/b2c-cli/b2c-scapi-schemas/SKILL.md +6 -2
  25. package/content/guidance/b2c-cli/b2c-site-import-export/SKILL.md +1 -1
  26. package/content/guidance/b2c-cli/b2c-sites/SKILL.md +1 -1
  27. package/content/guidance/b2c-cli/b2c-slas/SKILL.md +1 -1
  28. package/content/guidance/b2c-ops/b2c-checkout-triage/SKILL.md +2 -2
  29. package/content/guidance/b2c-ops/b2c-edge-traffic-triage/SKILL.md +69 -0
  30. package/content/guidance/b2c-ops/b2c-job-health/SKILL.md +13 -8
  31. package/content/guidance/b2c-ops/b2c-order-failure-triage/SKILL.md +1 -1
  32. package/content/guidance/b2c-ops/b2c-order-failure-triage/references/order-evidence.md +2 -2
  33. package/content/guidance/b2c-ops/b2c-production-triage/SKILL.md +5 -4
  34. package/content/guidance/index.json +981 -259
  35. package/content/guidance/mcp/{cip → b2c-mcp-cip}/SKILL.md +10 -8
  36. package/content/guidance/mcp/{b2c-config → b2c-mcp-config}/SKILL.md +10 -9
  37. package/content/guidance/mcp/{debugger → b2c-mcp-debugger}/SKILL.md +9 -8
  38. package/content/guidance/mcp/b2c-mcp-scapi/SKILL.md +98 -0
  39. package/content/guidance/mcp/b2c-mcp-scapi/references/authentication.md +34 -0
  40. package/content/guidance/mcp/b2c-mcp-scapi/references/compose-verify.md +25 -0
  41. package/content/guidance/mcp/b2c-mcp-scapi/references/confirmation.md +30 -0
  42. package/content/guidance/mcp/b2c-mcp-scapi/references/discover.md +94 -0
  43. package/content/guidance/mcp/b2c-mcp-scapi/references/jobs.md +72 -0
  44. package/content/guidance/mcp/b2c-mcp-scapi/references/workflows.md +28 -0
  45. package/content/guidance/mcp/{server → b2c-mcp-server}/SKILL.md +52 -25
  46. package/content/guidance/storefront-next/sfnext-accessibility/SKILL.md +103 -0
  47. package/content/guidance/storefront-next/sfnext-accessibility/references/checklist.md +64 -0
  48. package/content/guidance/storefront-next/sfnext-analytics-consent/SKILL.md +91 -0
  49. package/content/guidance/storefront-next/sfnext-analytics-consent/references/CUSTOM-ADAPTER.md +49 -0
  50. package/content/guidance/storefront-next/sfnext-authentication/SKILL.md +86 -79
  51. package/content/guidance/storefront-next/sfnext-authentication/references/COOKIES.md +39 -0
  52. package/content/guidance/storefront-next/sfnext-authentication/references/LOGIN-FLOWS.md +59 -0
  53. package/content/guidance/storefront-next/sfnext-commerce-features/SKILL.md +67 -0
  54. package/content/guidance/storefront-next/sfnext-commerce-features/references/FEATURE-PREREQUISITES.md +37 -0
  55. package/content/guidance/storefront-next/sfnext-components/SKILL.md +98 -136
  56. package/content/guidance/storefront-next/sfnext-components/references/COMPONENT-AUTHORING.md +118 -0
  57. package/content/guidance/storefront-next/sfnext-components/references/SHAPE-TOKENS.md +51 -0
  58. package/content/guidance/storefront-next/sfnext-components/references/STORYBOOK.md +54 -0
  59. package/content/guidance/storefront-next/sfnext-components/references/TOKEN-SYSTEM.md +53 -0
  60. package/content/guidance/storefront-next/sfnext-components/references/TROUBLESHOOTING.md +19 -0
  61. package/content/guidance/storefront-next/sfnext-configuration/SKILL.md +116 -113
  62. package/content/guidance/storefront-next/sfnext-configuration/references/ENV-VARIABLES.md +55 -0
  63. package/content/guidance/storefront-next/sfnext-configuration/references/MULTI-SITE-URLS.md +137 -0
  64. package/content/guidance/storefront-next/sfnext-data-fetching/SKILL.md +100 -150
  65. package/content/guidance/storefront-next/sfnext-data-fetching/references/ACTIONS.md +53 -0
  66. package/content/guidance/storefront-next/sfnext-data-fetching/references/API-CLIENTS.md +34 -0
  67. package/content/guidance/storefront-next/sfnext-data-fetching/references/LOADERS.md +73 -0
  68. package/content/guidance/storefront-next/sfnext-data-fetching/references/SCAPI-FETCHER.md +23 -77
  69. package/content/guidance/storefront-next/sfnext-deployment/SKILL.md +83 -97
  70. package/content/guidance/storefront-next/sfnext-deployment/references/MRT-DEPLOYMENT.md +37 -68
  71. package/content/guidance/storefront-next/sfnext-extensions/SKILL.md +73 -97
  72. package/content/guidance/storefront-next/sfnext-extensions/references/ACTION-HOOKS.md +57 -0
  73. package/content/guidance/storefront-next/sfnext-extensions/references/BASE-AUDIT.md +47 -44
  74. package/content/guidance/storefront-next/sfnext-extensions/references/CLI-AND-INSTALL.md +58 -0
  75. package/content/guidance/storefront-next/sfnext-extensions/references/EXTENSION-EXAMPLES.md +49 -86
  76. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/SKILL.md +59 -114
  77. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/references/HYBRID-PROXY-CONFIG.md +53 -90
  78. package/content/guidance/storefront-next/sfnext-i18n/SKILL.md +96 -131
  79. package/content/guidance/storefront-next/sfnext-i18n/references/locale-config.md +35 -0
  80. package/content/guidance/storefront-next/sfnext-overview/SKILL.md +101 -0
  81. package/content/guidance/storefront-next/sfnext-page-designer/SKILL.md +152 -131
  82. package/content/guidance/storefront-next/sfnext-page-designer/references/BUSINESS-MANAGER.md +46 -0
  83. package/content/guidance/storefront-next/sfnext-page-designer/references/COMPONENT-REGISTRY.md +86 -53
  84. package/content/guidance/storefront-next/sfnext-page-designer/references/DECORATOR-PATTERNS.md +119 -131
  85. package/content/guidance/storefront-next/sfnext-page-designer/references/REVIEW-CHECKLIST.md +83 -0
  86. package/content/guidance/storefront-next/sfnext-page-designer/references/TROUBLESHOOTING.md +35 -0
  87. package/content/guidance/storefront-next/sfnext-performance/SKILL.md +75 -105
  88. package/content/guidance/storefront-next/sfnext-performance/references/PERFORMANCE-REVIEW-CHECKLIST.md +85 -0
  89. package/content/guidance/storefront-next/sfnext-performance/references/SUSPENSE-AND-STREAMING.md +58 -0
  90. package/content/guidance/storefront-next/sfnext-project-setup/SKILL.md +103 -116
  91. package/content/guidance/storefront-next/sfnext-project-setup/references/PROJECT-STRUCTURE.md +61 -99
  92. package/content/guidance/storefront-next/sfnext-project-setup/references/SCRIPTS.md +47 -0
  93. package/content/guidance/storefront-next/sfnext-project-setup/references/SFNEXT-CLI.md +63 -0
  94. package/content/guidance/storefront-next/sfnext-quality-gates/SKILL.md +70 -0
  95. package/content/guidance/storefront-next/sfnext-quality-gates/references/lint-and-budgets.md +39 -0
  96. package/content/guidance/storefront-next/sfnext-revalidation/SKILL.md +121 -0
  97. package/content/guidance/storefront-next/sfnext-revalidation/references/POLICIES-AND-TAGS.md +55 -0
  98. package/content/guidance/storefront-next/sfnext-routing/SKILL.md +86 -143
  99. package/content/guidance/storefront-next/sfnext-routing/references/ROUTE-CONVENTIONS.md +51 -51
  100. package/content/guidance/storefront-next/sfnext-routing/references/URLS-AND-SEO-ROUTES.md +22 -0
  101. package/content/guidance/storefront-next/sfnext-scapi/SKILL.md +126 -0
  102. package/content/guidance/storefront-next/sfnext-scapi/references/WORKED-EXAMPLE.md +39 -0
  103. package/content/guidance/storefront-next/sfnext-security/SKILL.md +129 -0
  104. package/content/guidance/storefront-next/sfnext-security/references/COOKIE-DOMAIN.md +39 -0
  105. package/content/guidance/storefront-next/sfnext-security/references/TURNSTILE.md +43 -0
  106. package/content/guidance/storefront-next/sfnext-seo/SKILL.md +95 -0
  107. package/content/guidance/storefront-next/sfnext-seo/references/MULTI-DOMAIN-BASE-PATH.md +17 -0
  108. package/content/guidance/storefront-next/sfnext-seo/references/SEO-ROUTES.md +31 -0
  109. package/content/guidance/storefront-next/sfnext-state-management/SKILL.md +80 -89
  110. package/content/guidance/storefront-next/sfnext-state-management/references/PATTERNS.md +45 -0
  111. package/content/guidance/storefront-next/sfnext-testing/SKILL.md +105 -138
  112. package/content/guidance/storefront-next/sfnext-testing/references/E2E.md +38 -0
  113. package/content/guidance/storefront-next/sfnext-testing/references/STORYBOOK-PATTERNS.md +73 -94
  114. package/content/guidance/storefront-next/sfnext-testing/references/UNIT-AND-ROUTE-TESTS.md +60 -0
  115. package/content/guidance/storefront-next/sfnext-theming/SKILL.md +104 -0
  116. package/content/guidance/storefront-next/sfnext-theming/references/REBRAND-CHECKLIST.md +29 -0
  117. package/dist/commands/mcp.d.ts +8 -2
  118. package/dist/commands/mcp.js +54 -20
  119. package/dist/guidance.d.ts +4 -1
  120. package/dist/guidance.js +23 -5
  121. package/dist/registry.d.ts +2 -1
  122. package/dist/registry.js +3 -3
  123. package/dist/server.d.ts +10 -0
  124. package/dist/server.js +21 -0
  125. package/dist/skill-references.js +5 -5
  126. package/dist/tools/cartridges/index.js +1 -0
  127. package/dist/tools/cip/index.js +6 -3
  128. package/dist/tools/diagnostics/debug-capture-at-breakpoint.js +1 -1
  129. package/dist/tools/diagnostics/debug-set-breakpoints.js +1 -1
  130. package/dist/tools/diagnostics/debug-start-session.js +1 -1
  131. package/dist/tools/docs/docs-read.js +4 -2
  132. package/dist/tools/docs/docs-search.js +10 -8
  133. package/dist/tools/docs/topics.d.ts +5 -0
  134. package/dist/tools/docs/topics.js +5 -0
  135. package/dist/tools/scapi/index.d.ts +4 -1
  136. package/dist/tools/scapi/index.js +4 -2
  137. package/dist/tools/scapi/scapi-code.d.ts +2 -2
  138. package/dist/tools/scapi/scapi-code.js +106 -81
  139. package/dist/tools/scapi/scapi-schemas-list.js +93 -56
  140. package/dist/utils/types.d.ts +6 -0
  141. package/node_modules/@salesforce/b2c-agent-plugins/CHANGELOG.md +32 -0
  142. package/node_modules/@salesforce/b2c-agent-plugins/README.md +5 -0
  143. package/node_modules/@salesforce/b2c-agent-plugins/b2c/.codex-plugin/plugin.json +1 -1
  144. package/node_modules/@salesforce/b2c-agent-plugins/b2c/plugin.json +1 -1
  145. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-hooks/references/ORDER-HOOK-LIFECYCLE.md +1 -1
  146. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-onboarding/SKILL.md +4 -4
  147. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-ordering/SKILL.md +2 -2
  148. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-querying-data/SKILL.md +2 -2
  149. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-admin/SKILL.md +3 -3
  150. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-admin/references/CLIENT-EXAMPLES.md +4 -4
  151. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-shopper/SKILL.md +6 -6
  152. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-shopper/references/CLIENT-EXAMPLES.md +8 -9
  153. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/.codex-plugin/plugin.json +1 -1
  154. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/plugin.json +1 -1
  155. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-cip/SKILL.md +3 -3
  156. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-cip/references/SALES_ANALYSIS.md +1 -1
  157. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-config/SKILL.md +54 -25
  158. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-content/SKILL.md +1 -1
  159. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-debug/SKILL.md +1 -1
  160. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-docs/SKILL.md +23 -2
  161. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-ecdn/SKILL.md +2 -0
  162. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-ecdn/references/ADVANCED.md +1 -1
  163. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-job/SKILL.md +9 -3
  164. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-job/references/IMPORT.md +1 -1
  165. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-job/references/RUN-AND-MONITOR.md +35 -6
  166. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-metrics/SKILL.md +1 -1
  167. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-mrt/SKILL.md +3 -3
  168. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-scapi-custom/SKILL.md +1 -1
  169. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-scapi-schemas/SKILL.md +6 -2
  170. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-site-import-export/SKILL.md +1 -1
  171. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-sites/SKILL.md +1 -1
  172. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-slas/SKILL.md +1 -1
  173. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/.codex-plugin/plugin.json +4 -3
  174. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/README.md +1 -0
  175. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/plugin.json +4 -3
  176. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-checkout-triage/SKILL.md +2 -2
  177. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-edge-traffic-triage/SKILL.md +69 -0
  178. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-job-health/SKILL.md +13 -8
  179. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-order-failure-triage/SKILL.md +1 -1
  180. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-order-failure-triage/references/order-evidence.md +2 -2
  181. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-production-triage/SKILL.md +5 -4
  182. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/README.md +4 -4
  183. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/SKILL.md +76 -73
  184. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/evals/trigger-evals.json +12 -10
  185. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/references/PAGE-DESIGNER-SFN.md +49 -74
  186. package/node_modules/@salesforce/b2c-agent-plugins/package.json +1 -1
  187. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/.codex-plugin/plugin.json +9 -6
  188. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/README.md +43 -22
  189. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/plugin.json +9 -6
  190. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/SKILL.md +103 -0
  191. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/evals/trigger-evals.json +5 -0
  192. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/references/checklist.md +64 -0
  193. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/SKILL.md +91 -0
  194. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/evals/trigger-evals.json +5 -0
  195. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/references/CUSTOM-ADAPTER.md +49 -0
  196. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/SKILL.md +86 -79
  197. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/evals/trigger-evals.json +5 -0
  198. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/references/COOKIES.md +39 -0
  199. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/references/LOGIN-FLOWS.md +59 -0
  200. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/SKILL.md +67 -0
  201. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/evals/trigger-evals.json +5 -0
  202. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/references/FEATURE-PREREQUISITES.md +37 -0
  203. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/SKILL.md +98 -136
  204. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/evals/trigger-evals.json +5 -0
  205. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/COMPONENT-AUTHORING.md +118 -0
  206. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/SHAPE-TOKENS.md +51 -0
  207. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/STORYBOOK.md +54 -0
  208. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/TOKEN-SYSTEM.md +53 -0
  209. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/TROUBLESHOOTING.md +19 -0
  210. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/SKILL.md +116 -113
  211. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/evals/trigger-evals.json +5 -0
  212. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/references/ENV-VARIABLES.md +55 -0
  213. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/references/MULTI-SITE-URLS.md +137 -0
  214. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/SKILL.md +100 -150
  215. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/evals/trigger-evals.json +5 -0
  216. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/ACTIONS.md +53 -0
  217. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/API-CLIENTS.md +34 -0
  218. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/LOADERS.md +73 -0
  219. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/SCAPI-FETCHER.md +23 -77
  220. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/SKILL.md +83 -97
  221. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/evals/trigger-evals.json +5 -0
  222. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/references/MRT-DEPLOYMENT.md +37 -68
  223. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/SKILL.md +73 -97
  224. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/evals/trigger-evals.json +5 -0
  225. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/ACTION-HOOKS.md +57 -0
  226. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/BASE-AUDIT.md +47 -44
  227. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/CLI-AND-INSTALL.md +58 -0
  228. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/EXTENSION-EXAMPLES.md +49 -86
  229. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/SKILL.md +59 -114
  230. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/evals/trigger-evals.json +5 -0
  231. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/references/HYBRID-PROXY-CONFIG.md +53 -90
  232. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/SKILL.md +96 -131
  233. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/evals/trigger-evals.json +5 -0
  234. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/references/locale-config.md +35 -0
  235. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-overview/SKILL.md +101 -0
  236. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-overview/evals/trigger-evals.json +5 -0
  237. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/SKILL.md +152 -131
  238. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/evals/trigger-evals.json +5 -0
  239. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/BUSINESS-MANAGER.md +46 -0
  240. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/COMPONENT-REGISTRY.md +86 -53
  241. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/DECORATOR-PATTERNS.md +119 -131
  242. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/REVIEW-CHECKLIST.md +83 -0
  243. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/TROUBLESHOOTING.md +35 -0
  244. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/SKILL.md +75 -105
  245. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/evals/trigger-evals.json +5 -0
  246. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/references/PERFORMANCE-REVIEW-CHECKLIST.md +85 -0
  247. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/references/SUSPENSE-AND-STREAMING.md +58 -0
  248. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/SKILL.md +103 -116
  249. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/evals/trigger-evals.json +5 -0
  250. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/PROJECT-STRUCTURE.md +61 -99
  251. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/SCRIPTS.md +47 -0
  252. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/SFNEXT-CLI.md +63 -0
  253. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/SKILL.md +70 -0
  254. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/evals/trigger-evals.json +5 -0
  255. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/references/lint-and-budgets.md +39 -0
  256. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/SKILL.md +121 -0
  257. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/evals/trigger-evals.json +5 -0
  258. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/references/POLICIES-AND-TAGS.md +55 -0
  259. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/SKILL.md +86 -143
  260. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/evals/trigger-evals.json +5 -0
  261. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/references/ROUTE-CONVENTIONS.md +51 -51
  262. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/references/URLS-AND-SEO-ROUTES.md +22 -0
  263. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/SKILL.md +126 -0
  264. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/evals/trigger-evals.json +5 -0
  265. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/references/WORKED-EXAMPLE.md +39 -0
  266. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/SKILL.md +129 -0
  267. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/evals/trigger-evals.json +5 -0
  268. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/references/COOKIE-DOMAIN.md +39 -0
  269. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/references/TURNSTILE.md +43 -0
  270. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/SKILL.md +95 -0
  271. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/evals/trigger-evals.json +5 -0
  272. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/references/MULTI-DOMAIN-BASE-PATH.md +17 -0
  273. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/references/SEO-ROUTES.md +31 -0
  274. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/SKILL.md +80 -89
  275. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/evals/trigger-evals.json +5 -0
  276. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/references/PATTERNS.md +45 -0
  277. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/SKILL.md +105 -138
  278. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/evals/trigger-evals.json +5 -0
  279. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/E2E.md +38 -0
  280. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/STORYBOOK-PATTERNS.md +73 -94
  281. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/UNIT-AND-ROUTE-TESTS.md +60 -0
  282. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/SKILL.md +104 -0
  283. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/evals/trigger-evals.json +5 -0
  284. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/references/REBRAND-CHECKLIST.md +29 -0
  285. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next-figma/skills/sfnext-create-figma-kit/SKILL.md +3 -3
  286. package/oclif.manifest.json +21 -4
  287. package/package.json +4 -4
  288. package/content/guidance/mcp/scapi/SKILL.md +0 -203
  289. package/content/guidance/mcp/scapi/references/jobs.md +0 -30
  290. package/content/guidance/storefront-next/sfnext-create-component/SKILL.md +0 -195
  291. package/content/guidance/storefront-next/sfnext-create-component/references/COMPONENT-AUTHORING.md +0 -206
  292. package/content/guidance/storefront-next/sfnext-create-component/references/PROJECT-STRUCTURE.md +0 -43
  293. package/content/guidance/storefront-next/sfnext-create-component/references/TOKEN-SYSTEM.md +0 -130
  294. package/content/guidance/storefront-next/sfnext-create-component/references/TROUBLESHOOTING.md +0 -34
  295. package/content/guidance/storefront-next/sfnext-create-vertical/SKILL.md +0 -135
  296. package/content/guidance/storefront-next/sfnext-create-vertical/references/COMPONENT-AUTHORING.md +0 -206
  297. package/content/guidance/storefront-next/sfnext-create-vertical/references/PROJECT-STRUCTURE.md +0 -43
  298. package/content/guidance/storefront-next/sfnext-create-vertical/references/TOKEN-SYSTEM.md +0 -130
  299. package/content/guidance/storefront-next/sfnext-create-vertical/references/TROUBLESHOOTING.md +0 -34
  300. package/content/guidance/storefront-next/sfnext-custom-apis/SKILL.md +0 -221
  301. package/content/guidance/storefront-next/sfnext-custom-apis/references/WORKFLOW-EXAMPLES.md +0 -294
  302. package/content/guidance/storefront-next/sfnext-data-fetching/references/LOADER-PATTERNS.md +0 -102
  303. package/content/guidance/storefront-next/sfnext-project-setup/references/ENV-VARIABLES.md +0 -82
  304. package/content/guidance/storefront-next/sfnext-scapi-management/SKILL.md +0 -203
  305. package/content/guidance/storefront-next/sfnext-scapi-management/references/CLI-COMMANDS.md +0 -122
  306. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/SKILL.md +0 -195
  307. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/evals/trigger-evals.json +0 -12
  308. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/COMPONENT-AUTHORING.md +0 -206
  309. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/PROJECT-STRUCTURE.md +0 -43
  310. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/TOKEN-SYSTEM.md +0 -130
  311. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/TROUBLESHOOTING.md +0 -34
  312. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/SKILL.md +0 -135
  313. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/evals/trigger-evals.json +0 -12
  314. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/COMPONENT-AUTHORING.md +0 -206
  315. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/PROJECT-STRUCTURE.md +0 -43
  316. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/TOKEN-SYSTEM.md +0 -130
  317. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/TROUBLESHOOTING.md +0 -34
  318. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/SKILL.md +0 -221
  319. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/evals/trigger-evals.json +0 -12
  320. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/references/WORKFLOW-EXAMPLES.md +0 -294
  321. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/LOADER-PATTERNS.md +0 -102
  322. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/ENV-VARIABLES.md +0 -82
  323. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/SKILL.md +0 -203
  324. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/evals/trigger-evals.json +0 -12
  325. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/references/CLI-COMMANDS.md +0 -122
  326. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/custom-apis.md +0 -0
  327. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/custom-properties.md +0 -0
  328. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/products.md +0 -0
  329. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/promotions.md +0 -0
  330. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/saving.md +0 -0
  331. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/snippets.md +0 -0
  332. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/tokens.md +0 -0
  333. /package/content/guidance/mcp/{server → b2c-mcp-server}/references/files.md +0 -0
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: sfnext-theming
3
+ description: >-
4
+ Re-brand and re-skin a Storefront Next storefront: change the color palette, corner radius and shadows (shape tokens), header and footer colors, typography and web fonts, logo, favicon, hero scrims, and brand copy, with WCAG contrast checks. Use when asked to rebrand or restyle the storefront, change the primary color, swap the font, make the header dark, make cards rounded or flat, replace the logo, edit src/theme, core.css, header.css, brand.css, tailwind.css, base.css, or src/lib/fonts.ts, or verify a theme change in the Design System Storybook stories. Do not use for building or styling an individual component (use `storefront-next:sfnext-components`), Figma kit sync (use `storefront-next-figma:sfnext-create-figma-kit`), or site configuration (use `storefront-next:sfnext-configuration`).
5
+ ---
6
+
7
+ # Theming a Storefront Next Storefront
8
+
9
+ Your storefront has exactly one theme, in `src/theme/`, and it is yours to edit. Rebranding is mostly value changes in a few CSS files; components pick the new look up through token classes. Choose a starting look with `sfnext create-storefront --vertical <id>` (a starter theme) and then customize it as below.
10
+
11
+ ## Where things live
12
+
13
+ | Concern | File |
14
+ |---|---|
15
+ | Entry point and Tailwind `@source` scoping | `src/theme/index.css` (imports `shared.css`, which sets import order) |
16
+ | Palette: background, foreground, primary, secondary, accent, muted, border, ring, destructive/success/warning/info | `src/theme/tokens/core.css` |
17
+ | Shape: `--ui-radius`, `--ui-shadow`, `--ui-border-width` | `src/theme/tokens/core.css` |
18
+ | Header, menu, footer, newsletter band, `--header-logo-filter` | `src/theme/tokens/header.css` |
19
+ | Status and feedback colors | `src/theme/tokens/status.css` |
20
+ | Swatches, sidebar, agentic UI, payment and cart extras, focus helpers | `tokens/swatch.css`, `sidebar.css`, `agentic.css`, `components.css`, `custom.css` |
21
+ | `--brand-*` color primitives and hero scrims (`--hero-overlay-*`, `--hero-scrim`) | `src/theme/tokens/brand.css` |
22
+ | Font stacks `--font-sans/-serif/-mono`; token-to-utility bridge | `src/theme/tailwind.css` (`@theme inline`) |
23
+ | `@font-face`, base layer, `.section-container`, section-scoped shape rules | `src/theme/base.css` |
24
+ | Component-level CSS (navigation, cart sheet, toasts, store locator) | `src/theme/overrides/*.css` |
25
+ | Font binding and preload | `public/fonts/*.woff2`, `src/lib/fonts.ts` (used by `src/root.tsx`) |
26
+ | Logo, favicon, hero and payment images | `public/images/`, `public/favicon.ico` |
27
+ | Site name and brand strings | `src/locales/<locale>/translations.json` (`common.defaultSiteName`) |
28
+
29
+ Palette values are not all derived from `brand.css`: `core.css` sets `--primary` and friends directly, so change them there. Token-to-class wiring and the full token file list are covered in `storefront-next:sfnext-components` (token system reference).
30
+
31
+ ## Workflow
32
+
33
+ ### 1. Read the current theme
34
+
35
+ Open `src/theme/index.css`, `tokens/core.css`, `tokens/header.css`, and `tailwind.css` before editing. Keep variable names; change values.
36
+
37
+ ### 2. Palette
38
+
39
+ Edit `:root` in `tokens/core.css`: `--primary`/`--primary-foreground`, `--background`/`--foreground`, `--secondary`, `--accent`, `--muted`, borders, `--ring`. Comments in the file record WCAG contrast ratios for the current values; recompute for yours. Minimums: 4.5:1 for text (`--primary` on `--primary-foreground`, `--foreground` on `--background`, each status color on its `-foreground`), 3:1 for borders and focus rings against the surface.
40
+
41
+ Update `tokens/status.css` if semantic colors clash with the new palette, and `tokens/swatch.css`, `tokens/components.css` where defaults look off.
42
+
43
+ ### 3. Header, footer, and newsletter chrome
44
+
45
+ `tokens/header.css` is deliberately decoupled from `--primary`, so changing the primary color does not recolor the header. Set `--header-background`/`--header-foreground`, menu hover/active colors, and `--footer-*` yourself. The logo is an image: for a dark header with a dark logo, set `--header-logo-filter` (for example `brightness(0) invert(1)` turns a black logo white; `none` leaves it alone). `--newsletter-background` defaults to `var(--primary)`.
46
+
47
+ ### 4. Shape
48
+
49
+ Set `--ui-radius`, `--ui-shadow`, `--ui-border-width` in `core.css` to re-skin every shadcn primitive at once. Flat and square: `0`, `none`, `0`. Soft and raised: `var(--radius-xl)`, a light shadow, `0`. Do not edit primitives or add `rounded-*`/`shadow-*` classes, and never write `--radius-ui` / `--shadow-ui` (compile-time bridges, silent no-op). Scoped overrides, section rules, and the Card border exception are covered in `storefront-next:sfnext-components` (shape tokens reference). If your default border width is 0, the section rules at the bottom of `base.css` re-enable 1px Card borders on account, auth, and checkout pages; adjust those to taste.
50
+
51
+ ### 5. Typography
52
+
53
+ Four touch points, all must agree:
54
+
55
+ 1. Put the variable `.woff2` in `public/fonts/`.
56
+ 2. `src/lib/fonts.ts`: `import font from '/fonts/<file>.woff2'; export const primaryFont = font;` (`root.tsx` preloads it).
57
+ 3. `@font-face` in `src/theme/base.css` (same URL, weight range, `font-display: swap`).
58
+ 4. `--font-sans` / `--font-serif` / `--font-mono` in `src/theme/tailwind.css`, with a fallback stack of similar metrics.
59
+
60
+ Self-host fonts (WOFF2, preloaded, no third-party CDN). Remove the old font file if unused.
61
+
62
+ ### 6. Assets and copy
63
+
64
+ - Logo: replace `public/images/logo.svg` (the `Logo` component in `src/components/logo` renders it; you can replace that component for an inline-SVG logo).
65
+ - Favicon: `public/favicon.ico`.
66
+ - Hero and promo images: `public/images/` (and the Page Designer content that references them).
67
+ - Brand name: `common.defaultSiteName` in each `src/locales/<locale>/translations.json` you ship (used in page titles).
68
+ - Hero text scrims: `--brand-black`/`--brand-white` in `brand.css` feed `--hero-overlay-dark/-light` and `--hero-scrim`; update them with the brand so hero text stays legible.
69
+
70
+ ### 7. Dark mode
71
+
72
+ The shipped theme has one palette and no `.dark` token block. Do not promise dark mode; it would be new work (a `.dark` scope for every token file).
73
+
74
+ ### 8. Verify
75
+
76
+ ```bash
77
+ pnpm dev # look at home, PLP, PDP, cart, checkout, account
78
+ pnpm storybook # Design System/Theme/Colors, Typography, Radius, Shadows
79
+ pnpm lint # color-linter flags hard-coded colors
80
+ pnpm typecheck
81
+ pnpm storybook:test --type=snapshot # add --update only after reviewing intended changes
82
+ pnpm storybook:test --type=a11y # contrast and ARIA via axe-core
83
+ ```
84
+
85
+ The `Design System/Theme/*` stories (`src/design-system/stories/`) render the live tokens and are the quickest visual check.
86
+
87
+ ## Guardrails
88
+
89
+ - Change values in token files; do not sprinkle hex codes or `bg-[#...]` in components.
90
+ - Need a new token? Define it in a `tokens/*.css` file and bridge it in `@theme inline` in `tailwind.css` (see TOKEN-SYSTEM).
91
+ - Component-level CSS goes in `src/theme/overrides/*.css` (import it from `shared.css`) or `base.css`; prefer `[data-slot="..."]` selectors over utility-class selectors.
92
+
93
+ ## Design handoff
94
+
95
+ If your designers work in Figma, keep the Figma variables and code tokens aligned with `storefront-next-figma:sfnext-create-figma-kit` (requires the Figma MCP server). Change the tokens in code first, then sync the kit.
96
+
97
+ ## Related Skills
98
+
99
+ - `storefront-next:sfnext-components` - Build and style components with token classes and shape tokens
100
+ - `storefront-next:sfnext-accessibility` - Contrast, focus, and accessibility scans
101
+ - `storefront-next:sfnext-i18n` - Locale files that hold brand copy
102
+ - `storefront-next:sfnext-performance` - Font and image loading guidance
103
+ - `storefront-next:sfnext-page-designer` - Content and hero components authored in Page Designer
104
+ - `storefront-next-figma:sfnext-create-figma-kit` - Sync the Figma design kit with your tokens
@@ -0,0 +1,5 @@
1
+ [
2
+ {"query": "Re-skin my Storefront Next storefront: change the primary color to a deep green, swap the font to Inter, and make the header dark.", "should_trigger": true},
3
+ {"query": "Make the cards and buttons rounded with a soft shadow across the whole site. Where do I change that?", "should_trigger": true},
4
+ {"query": "Create a new ProductBadge component with CVA variants and a Storybook story that passes the snapshot tests.", "should_trigger": false}
5
+ ]
@@ -0,0 +1,29 @@
1
+ # Rebrand Checklist
2
+
3
+ Work top to bottom; each item names the file to touch.
4
+
5
+ - [ ] `src/theme/tokens/core.css`: `--primary`, `--primary-foreground`, `--background`, `--foreground`, `--secondary`, `--accent`, `--muted`, `--border`, `--input`, `--ring`
6
+ - [ ] `src/theme/tokens/core.css`: contrast re-checked (text 4.5:1, borders and focus rings 3:1); update the ratio comments
7
+ - [ ] `src/theme/tokens/core.css`: `--ui-radius`, `--ui-shadow`, `--ui-border-width`
8
+ - [ ] `src/theme/base.css`: section-scoped Card border rules still match the chosen border width
9
+ - [ ] `src/theme/tokens/header.css`: header, menu, footer, newsletter colors; `--header-logo-filter`
10
+ - [ ] `src/theme/tokens/status.css`: status colors still readable against the new surfaces
11
+ - [ ] `src/theme/tokens/brand.css`: `--brand-*` primitives and hero scrims
12
+ - [ ] `src/theme/tokens/swatch.css`, `components.css`: swatch and badge defaults
13
+ - [ ] Font: `public/fonts/`, `src/lib/fonts.ts`, `@font-face` in `src/theme/base.css`, `--font-*` in `src/theme/tailwind.css`
14
+ - [ ] `public/images/logo.svg`, `public/favicon.ico`, hero images
15
+ - [ ] `common.defaultSiteName` in `src/locales/*/translations.json`
16
+ - [ ] Page Designer content referencing old imagery or colors
17
+ - [ ] `pnpm lint`, `pnpm typecheck`, `pnpm storybook:test --type=snapshot`, `--type=a11y`
18
+ - [ ] Visual pass: home, PLP, PDP, cart, checkout, account, error pages
19
+
20
+ ## Common mistakes
21
+
22
+ | Mistake | Result |
23
+ |---|---|
24
+ | Editing only `brand.css` | Little changes; the palette is in `core.css` |
25
+ | Writing `--radius-ui` or `--shadow-ui` | Silent no-op; use `--ui-radius` / `--ui-shadow` |
26
+ | Changing the font file but not `base.css` `@font-face` | Old font still loads or fallback shows |
27
+ | Forgetting `--header-logo-filter` after a header color change | Logo unreadable |
28
+ | Hard-coding hex in components | `pnpm lint` fails (`custom/color-linter`) and the theme no longer controls it |
29
+ | Changing `--primary` and expecting the header to follow | Header tokens are independent; edit `header.css` |
@@ -7,7 +7,7 @@ description: Build or sync a Storefront Next vertical's Figma design kit — dup
7
7
 
8
8
  This skill is the entrypoint for setting up or syncing the **Figma design kit** for a Storefront Next vertical, so the kit stays aligned with the brand tokens defined in code.
9
9
 
10
- It is the design-kit companion to `sfnext-create-vertical` (in the `storefront-next` plugin): create or change the brand tokens in code first, then run this skill to mirror them in Figma.
10
+ It is the design-kit companion to `sfnext-theming` (in the `storefront-next` plugin): create or change the brand tokens in code first, then run this skill to mirror them in Figma.
11
11
 
12
12
  ## Step 0 — Verify prerequisites (required)
13
13
 
@@ -121,8 +121,8 @@ All three must pass with zero errors and zero warnings.
121
121
 
122
122
  ## Related Skills
123
123
 
124
- - `storefront-next:sfnext-create-vertical` - Define the brand tokens in code (run this first)
125
- - `storefront-next:sfnext-create-component` - Author the React component a Code Connect mapping points to
124
+ - `storefront-next:sfnext-theming` - Define the brand tokens in code (run this first)
125
+ - `storefront-next:sfnext-components` - Author the React component a Code Connect mapping points to
126
126
 
127
127
  ## Reference Documentation
128
128
 
@@ -81,7 +81,7 @@
81
81
  "type": "option"
82
82
  },
83
83
  "config": {
84
- "description": "Path to config file (in dw.json format; defaults to ./dw.json)",
84
+ "description": "Path to config file (in dw.json format; defaults to ./dw.json; empty for none)",
85
85
  "env": "SFCC_CONFIG",
86
86
  "helpGroup": "GLOBAL",
87
87
  "name": "config",
@@ -99,6 +99,15 @@
99
99
  "multiple": false,
100
100
  "type": "option"
101
101
  },
102
+ "dotenv-file": {
103
+ "description": "Path to .env file used instead of ./.env (empty for none)",
104
+ "env": "SFCC_DOTENV_FILE",
105
+ "helpGroup": "GLOBAL",
106
+ "name": "dotenv-file",
107
+ "hasDynamicHelp": false,
108
+ "multiple": false,
109
+ "type": "option"
110
+ },
102
111
  "project-directory": {
103
112
  "aliases": [
104
113
  "working-directory"
@@ -326,7 +335,7 @@
326
335
  "type": "option"
327
336
  },
328
337
  "mrt-backend": {
329
- "description": "MRT backend: auto (prefer SCAPI MRT when configured, else legacy), legacy, or scapi",
338
+ "description": "MRT backend: legacy (default), auto (prefer SCAPI MRT when configured, else legacy), or scapi",
330
339
  "env": "MRT_BACKEND",
331
340
  "name": "mrt-backend",
332
341
  "hasDynamicHelp": false,
@@ -458,12 +467,20 @@
458
467
  "type": "option"
459
468
  },
460
469
  "docs-topics": {
461
- "description": "Limit the documentation exposed by the docs tools to these categories (comma-separated allowlist). Options: script-api, job-step, commerce-api, pwa-kit-managed-runtime, sfnext, sfra, b2c-commerce, ocapi, tooling, help-admin, help-merchant, help-kb. Bounds the whole docs corpus; per-call category/storefront narrow within it. Unknown names are ignored.",
470
+ "description": "Limit the documentation exposed by the docs tools to these categories (comma-separated allowlist). Options: script-api, job-step, commerce-api, pwa-kit-managed-runtime, sfnext, sfra, b2c-commerce, commerce-solutions, ocapi, tooling, help-admin, help-merchant, help-kb. Bounds the whole docs corpus; per-call category/storefront narrow within it. Unknown names are ignored.",
462
471
  "env": "SFCC_DOCS_TOPICS",
463
472
  "name": "docs-topics",
464
473
  "hasDynamicHelp": false,
465
474
  "multiple": false,
466
475
  "type": "option"
476
+ },
477
+ "scapi-schemas": {
478
+ "description": "Local SCAPI OpenAPI contracts for scapi_search and scapi_execute (comma-separated JSON files, directories or http(s) URLs). Each replaces the bundled or live contract with the same family/name/version from servers[0].url, or adds an API. Developer option for beta and pre-release APIs. Overrides the project config scapi-schemas (dw.json or project .env).",
479
+ "env": "SFCC_SCAPI_SCHEMAS",
480
+ "name": "scapi-schemas",
481
+ "hasDynamicHelp": false,
482
+ "multiple": false,
483
+ "type": "option"
467
484
  }
468
485
  },
469
486
  "hasDynamicHelp": false,
@@ -476,5 +493,5 @@
476
493
  "enableJsonFlag": false
477
494
  }
478
495
  },
479
- "version": "3.2.1"
496
+ "version": "3.4.0"
480
497
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@salesforce/b2c-dx-mcp",
3
3
  "description": "MCP server for B2C Commerce developer experience tools",
4
- "version": "3.2.1",
4
+ "version": "3.4.0",
5
5
  "author": "Salesforce",
6
6
  "license": "Apache-2.0",
7
7
  "repository": "SalesforceCommerceCloud/b2c-developer-tooling",
@@ -80,8 +80,8 @@
80
80
  "ts-morph": "27.0.2",
81
81
  "yaml": "2.9.0",
82
82
  "zod": "4.5.4",
83
- "@salesforce/b2c-agent-plugins": "1.10.3",
84
- "@salesforce/b2c-tooling-sdk": "2.3.0"
83
+ "@salesforce/b2c-agent-plugins": "1.12.0",
84
+ "@salesforce/b2c-tooling-sdk": "2.5.0"
85
85
  },
86
86
  "bundledDependencies": [
87
87
  "@modelcontextprotocol/server",
@@ -128,7 +128,7 @@
128
128
  "preinspect": "pnpm run build",
129
129
  "inspect": "mcp-inspector node bin/run.js --toolsets all",
130
130
  "inspect:dev": "mcp-inspector node --conditions development bin/dev.js --toolsets all",
131
- "pretest": "tsc --noEmit -p test",
131
+ "pretest": "pnpm run generate:guidance && tsc --noEmit -p test",
132
132
  "test": "c8 mocha --forbid-only --ignore \"test/e2e/**\" \"test/**/*.test.ts\"",
133
133
  "test:ci": "c8 mocha --forbid-only --reporter json --reporter-option output=test-results.json --ignore \"test/e2e/**\" \"test/**/*.test.ts\"",
134
134
  "test:ci:win": "c8 --check-coverage=false mocha --forbid-only --reporter json --reporter-option output=test-results.json --ignore \"test/e2e/**\" \"test/**/*.test.ts\"",
@@ -1,203 +0,0 @@
1
- ---
2
- name: MCP SCAPI Code Mode
3
- description: Discover standard and live custom SCAPI contracts, compose Admin requests, and verify changes using configured authentication and safety rules.
4
- ---
5
-
6
- # SCAPI Code Mode
7
-
8
- Prefer dedicated tools. Otherwise discover with `scapi_search`, compose with
9
- `scapi_execute`. Use JavaScript async arrow functions; no TypeScript or imports.
10
- Warehouse reports/SQL use `cip_discover` / `cip_query`, not code mode;
11
- see [CIP analytics](skill://mcp/cip/SKILL.md).
12
- Use code mode for API discovery, request composition, and result processing.
13
- Use terminal/file tools for local development, builds, and filesystem work.
14
- Filesystem APIs, subprocesses, worker threads, and native addons are restricted.
15
- Read this skill once via resources or `skills_read`,
16
- then pass `skillRead: true`. This does not authorize mutations.
17
-
18
- ## Discover
19
-
20
- Discovery defaults to the bundled standard contracts offline; no credentials needed.
21
- Pass `schemas: "live"` to search the configured tenant's Schemas API contracts
22
- instead: tenant `c_*` properties, custom APIs, and APIs newer than the bundle.
23
- Live search needs `sfcc.scapi-schemas`, uses the same project context as
24
- `scapi_execute`, and caches per tenant for the server session (`refresh: true` refetches). Contracts that
25
- failed to load are listed in `schemaFailures`. Schemas and responses can be huge.
26
- Return only what the next decision needs:
27
-
28
- 1. Find APIs/operations through `spec.apis`/`spec.paths`; return method/path/operationId.
29
- 2. Narrow by `api`, path, or `authType`; inspect required inputs and selected fields,
30
- including `allOf` when present.
31
- 3. Inspect response fields only as needed; avoid whole operations/schema trees.
32
-
33
- Local refs expand; recursive/deep refs retain `$ref`. `op.auth.executable` means
34
- runtime support, not configured access; `op.security` gives scopes.
35
-
36
- ### Task map
37
-
38
- Use these API IDs to narrow discovery; inspect the operation's inputs before calling.
39
- Snippet names below have the `builtin/` prefix. Describe only the relevant snippet.
40
-
41
- | Task | API / starting point |
42
- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
43
- | Review runs, including successes | `operation/jobs/v1`: `searchJobExecutions`; `job-execution-review` snippet |
44
- | Inspect steps and exact log path | `operation/jobs/v1`: `getJobExecution`; `job-execution-inspect` snippet |
45
- | Investigate failures with detail reads | `failed-job-triage` snippet; [jobs](references/jobs.md) |
46
- | Start a job / stop an execution | `operation/jobs/v1`: `createJobExecution` / `deleteJobExecution`; confirm intent and active runs first |
47
- | Active/rollback versions, activation metadata | `dx/scripts/v1`: `getCodeVersions`; `code-version-inspect` snippet |
48
- | Activate/create/delete a code version | `dx/scripts/v1`: `updateCodeVersion` / `createCodeVersion` / `deleteCodeVersion` |
49
- | Site status, catalog, ordered cartridge path | `site/sites/v1`: `getSiteById`; `site-cartridge-inspect` snippet |
50
- | Change a site's custom cartridge path | `site/sites/v1`: `replaceSiteCustomCartridges`; preserve order and unrelated entries |
51
- | Basic product + optional category assignment | `create-product` snippet; [products](references/products.md) |
52
- | Campaign assignments and promotion details | `campaign-promotions` snippet; [promotions](references/promotions.md) |
53
-
54
- File content is WebDAV: `webdav_list` / `webdav_get` / `webdav_put`.
55
- Deploy local cartridge files with `cartridge_deploy`. Job schedules/definitions
56
- are not execution history; obtain expected schedules from Business Manager/user.
57
- Do not fall back to a terminal merely because there is no dedicated job/site tool.
58
-
59
- ### Tenant custom properties and APIs
60
-
61
- Bundled schemas omit tenant `c_*` definitions. Known custom fields can be sent
62
- directly in standard Admin bodies; schema retrieval is optional. SCAPI validates
63
- the payload. To discover tenant fields, search with `schemas: "live"` (narrow with
64
- `api`), or fetch the live schema with `scapi_schemas_list`: `includeSchemas: true`,
65
- `apiFamily`, `apiName`, `apiVersion`.
66
- Custom-property expansion defaults to true; disable with `expandCustomProperties: false`.
67
- `expandAll: true` retains full definitions; it is separate from custom-property
68
- expansion. Large contracts: fetch through `scapi_execute` and return only relevant
69
- fields ([example](references/custom-properties.md)). Requires `sfcc.scapi-schemas`.
70
- Use the same project/instance for schema lookup and writes.
71
-
72
- Live contracts found by `schemas: "live"` search, expanded `scapi_schemas_list`
73
- fetches, or Schemas API reads inside `scapi_execute` are cached for that tenant.
74
- `scapi_execute` then routes to them, replacing bundled versions; they never change
75
- the offline `spec`. If schema access fails, report it; use
76
- already-known fields or ask for missing details. The optional CLI equivalent is
77
- `b2c scapi schemas get`, which also expands custom properties by default.
78
-
79
- For custom endpoint contracts, search with `schemas: "live"` or use
80
- `scapi_schemas_list` with `apiFamily: "custom"`; check registration with
81
- `scapi_custom_apis_get_status` when needed. Custom endpoints found through live
82
- search are callable from `scapi_execute` for the same tenant. Otherwise fetch the
83
- live contract through `scapi.request` in the program before making declared calls. `AmOAuth2`
84
- and `ShopperToken` operations use their declared `c_*` scopes. [Custom API workflow](references/custom-apis.md).
85
-
86
- ## Authentication
87
-
88
- - `scapi.request()` and snippets using it authenticate automatically. Do not acquire
89
- or pass tokens first. For an explicitly requested token or external HTTP client,
90
- use `auth.accountManager()` / `auth.slas()` in `scapi_execute`:
91
- [token exports](references/tokens.md). These helpers are unavailable in search.
92
- - The operation's declared security selects the credential; there is no auth option.
93
- - Admin `AmOAuth2`: Account Manager credentials. Each request selects operation/tenant
94
- scopes and reuses suitable cached tokens; no upfront scope union.
95
- - Shopper `ShopperToken`: a SLAS guest shopper (`slasClientId`, plus `slasClientSecret`
96
- for private clients; Storefront Next `.env` supplies both). Requests need `siteId`
97
- (configured or `query.siteId`). The guest session is per site and persists across
98
- executions for the server session, so baskets carry over. SLAS scopes are fixed on
99
- the client, not requested per call; 401/403 diagnostics compare the token's scopes
100
- with the operation's. `sfcc.shopper-standard` satisfies only operations that list it.
101
- Public clients must allow redirect URI `http://localhost:3000/callback`.
102
- - Missing credentials: `config_inspect` with masking. `clientId` is Admin;
103
- `slasClientId` is Shopper. Configuration does not grant access.
104
- - Scope rejection: grant reported scopes in Account Manager; check extra configured
105
- scopes. Read/write alternatives are alternatives. Later failures do not undo writes.
106
- - Unsupported: registered-shopper-only operations (`RegisteredShopperToken`),
107
- trusted-system/agent on-behalf tokens, and SLAS itself (`shopper/auth/v1`).
108
- `auth.slas({flow: 'registered', ...})` exports a registered token for external clients.
109
- SLAS admin roles differ: [CLI/SDK](https://salesforcecommercecloud.github.io/b2c-developer-tooling/cli/slas).
110
- - HTTP 401/403 retain `status`/`data` plus `diagnostic`; preserve these.
111
- A 403 alone does not prove missing scopes.
112
-
113
- For missing values or wrong targets, read [MCP configuration](skill://mcp/b2c-config/SKILL.md)
114
- (`skills_read` ID `mcp/b2c-config`). For external client/role/tenant-filter setup,
115
- use `docs_read({query: "guide-authentication"})`; official Admin authorization:
116
- `commerce-api/authorization-for-admin-apis`, scope definitions: `commerce-api/auth-z-scope-catalog`.
117
- For other access questions, search `docs_search` with the specific error and API.
118
- If docs are unavailable, use the [authentication guide](https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/authentication).
119
- These are conditional setup references, not additional prerequisite reads.
120
-
121
- ## Compose and verify
122
-
123
- - Pass the execution `projectDirectory`; reuse resolved `organizationId`/`siteId`.
124
- Encode path IDs. `{organizationId}` placeholders resolve automatically.
125
- - Compose dependent calls with intermediate results and local helpers.
126
- Pause for unresolved intent or contracts.
127
- - Sequence dependent writes; batch independent reads at most four at a time.
128
- Await all requests. Map rejections to `{id, error: String(error)}`;
129
- raw `Promise.allSettled()` reasons lose Error details in JSON.
130
- - PUT can create or update: check existence and intent; read back writes.
131
- - Check `ok`/`status`: HTTP errors return; transport/auth/safety failures throw.
132
- Preserve completed writes and failed stages. Check writes before retrying;
133
- no program replay or automatic cleanup deletion.
134
- - Filter/page at the API, then project/aggregate in code. Include IDs, verification
135
- fields, errors, totals, and continuation inputs. Do not crop away missing data.
136
- - Limits: 20 calls, four outstanding, 30 seconds of active execution, 24 KB returned.
137
- Managed API/token calls are serialized within an execution. Narrow oversized
138
- discovery; reduce live pages/projections.
139
- - SDK safety applies per request, including POST searches. Use only authorized
140
- targeted exceptions. Confirmation uses client elicitation; see below. Code mode does not
141
- transfer binaries; use WebDAV tools for instance files, an external client for
142
- binary SCAPI endpoints.
143
- - `fetch` and `WebSocket` are disabled. Use `scapi.request()` inside programs;
144
- direct HTTP belongs in an external client, outside MCP Safety Mode. Do not use
145
- imports or other Node networking APIs to bypass this boundary.
146
-
147
- ## Confirmation and cancellation
148
-
149
- - A request requiring approval retains the running program and returns MCP
150
- `input_required`. Let the client handle elicitation and the protocol retry;
151
- never manufacture approval responses or modify opaque `requestState`.
152
- - Retries validate the original code, input, and target arguments, then resume
153
- the same execution. Repeated code is **not evaluated again**. Each request
154
- needs its own approval; a whole program is not a transaction.
155
- - Later managed calls wait for the pending decision. Earlier writes remain
156
- applied. Prompts identify the organization, operation, method/path, and execution
157
- ID. JSON previews are redacted and capped at five lines/400 characters; marked
158
- truncation does not limit approval, which covers the full request.
159
- Results include operation outcomes; `unknown` requires
160
- checking the affected records before a fresh attempt.
161
- - Decline/cancel terminates the entire execution, even if code catches errors.
162
- Explicitly stop work with `scapi_execute({action: "cancel", executionId, skillRead: true})`;
163
- omit code, input, project overrides, and protocol continuation state.
164
- - Approval has no server deadline; waiting does not consume the active runtime
165
- budget. At most four executions may be active per server, including pending
166
- approvals. Cancel unwanted work to free a slot. Server shutdown or disconnect
167
- releases retained workers; state does not survive a restart. Clients may impose
168
- their own timeout. Duplicate responses never replay code or send a request twice.
169
- - To change code/input/target, cancel unwanted retained work and start a fresh
170
- execution without continuation state. Cancellation does not roll back writes.
171
- Clients without form elicitation stop at confirmation-required requests.
172
-
173
- For safety levels, rule matching, configuration precedence, and confirmation
174
- semantics, read `docs_read({query: "guide-safety"})` when needed. If docs tools
175
- are unavailable, use the [Safety Mode guide](https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/safety.md).
176
- This is an optional policy reference, not another prerequisite read.
177
-
178
- ## Reusable workflows
179
-
180
- Find workflows with `codemode.search(query)`; `codemode.describe(name)`
181
- returns source/inputSchema. Inspect before first use; `codemode.run(name, input)`
182
- composes inside execution with shared limits/auth/safety. `builtin/` ships with
183
- the MCP; `user/` persists locally. [Catalog](references/snippets.md).
184
-
185
- Reuse a snippet when its inputs and verification cover the task. Otherwise adapt
186
- its source or compose direct requests; do not omit requested fields to fit a
187
- snippet. Inputs are schema-validated before invocation. Pass variable values
188
- through the tool's `input` to `async (input)` when preparing reusable code.
189
- Discover/describe inside either code tool; run snippets only inside `scapi_execute`.
190
- Saving requires an explicit user request and a reviewed outcome; a completed
191
- execution may still contain HTTP errors or partial failures.
192
-
193
- - [Products](references/products.md): create, optionally assign a storefront category, verify both.
194
- - [Promotions](references/promotions.md): join assignments/details in bounded batches.
195
- - [Jobs](references/jobs.md): review runs, inspect steps/logs, investigate failures.
196
-
197
- For explicit save requests, see [saving](references/saving.md).
198
-
199
- No CLI code-mode equivalent. For missing settings such as promotion discounts,
200
- consider [XML archives](skill://b2c-cli/b2c-site-import-export/SKILL.md)
201
- ([CLI docs](https://salesforcecommercecloud.github.io/b2c-developer-tooling/cli/jobs)).
202
- [Platform reference](https://developer.salesforce.com/docs/commerce/commerce-api/references).
203
- [Configuration/access](https://salesforcecommercecloud.github.io/b2c-developer-tooling/mcp/configuration).
@@ -1,30 +0,0 @@
1
- # Job review and investigation
2
-
3
- - Routine history: `builtin/job-execution-review` includes successes and unfinished
4
- runs; fixed `from`/`to`, optional `jobId`, bounded `limit` and `nextOffset`.
5
- - Exact execution: `builtin/job-execution-inspect` returns a page of steps and the
6
- exact `logFilePath`. Inspect processed item counts and expected business data.
7
- - Failure investigation: `builtin/failed-job-triage` joins search and details.
8
- Its status summary omits steps; use execution inspection when those matter.
9
-
10
- Use to inspect failed executions in a chosen interval. This example selects the
11
- last seven days; adapt the window and query to the task. Discover search and
12
- detail contracts first. Search uses POST: READ_ONLY may need an authorized,
13
- targeted allow rule. Do not lower the policy or rerun jobs to inspect them.
14
-
15
- Use the corresponding [built-in snippet](snippets.md); `codemode.describe(name)`
16
- returns its current source and input schema.
17
-
18
- At most four requests, three concurrent. For the next page, reuse the returned
19
- `from`/`to` and `nextOffset`; do not recompute the time window. An empty page with
20
- `hasMore: true` needs investigation, not an endless retry. Records can still change
21
- between reads. If the query can be answered from search hits, omit detail calls.
22
-
23
- For routine health checks or incomplete business results, use
24
- `skill://b2c-ops/b2c-job-health/SKILL.md` when that collection is available; a
25
- failed-only search cannot establish health. Read the returned `logFilePath` with
26
- `webdav_get`; inspect size with `webdav_list` if needed. Continue using byte
27
- `nextOffset`, or download to `outputPath` for local analysis. Recent/filter/watch
28
- needs use `logs_*`. CLI fallback: `b2c job log JOB_ID EXECUTION_ID`.
29
- The returned log path is evidence to guide lookup, not
30
- permission to read an arbitrary local path. Do not infer root cause from ERROR alone.