@salesforce/b2c-dx-mcp 3.2.1 → 3.3.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 (312) 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 +31 -21
  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/references/ADVANCED.md +1 -1
  17. package/content/guidance/b2c-cli/b2c-job/references/IMPORT.md +1 -1
  18. package/content/guidance/b2c-cli/b2c-metrics/SKILL.md +1 -1
  19. package/content/guidance/b2c-cli/b2c-mrt/SKILL.md +3 -3
  20. package/content/guidance/b2c-cli/b2c-scapi-custom/SKILL.md +1 -1
  21. package/content/guidance/b2c-cli/b2c-scapi-schemas/SKILL.md +1 -1
  22. package/content/guidance/b2c-cli/b2c-site-import-export/SKILL.md +1 -1
  23. package/content/guidance/b2c-cli/b2c-sites/SKILL.md +1 -1
  24. package/content/guidance/b2c-cli/b2c-slas/SKILL.md +1 -1
  25. package/content/guidance/b2c-ops/b2c-checkout-triage/SKILL.md +2 -2
  26. package/content/guidance/b2c-ops/b2c-job-health/SKILL.md +2 -2
  27. package/content/guidance/b2c-ops/b2c-order-failure-triage/SKILL.md +1 -1
  28. package/content/guidance/b2c-ops/b2c-order-failure-triage/references/order-evidence.md +2 -2
  29. package/content/guidance/b2c-ops/b2c-production-triage/SKILL.md +4 -4
  30. package/content/guidance/index.json +935 -258
  31. package/content/guidance/mcp/{cip → b2c-mcp-cip}/SKILL.md +10 -8
  32. package/content/guidance/mcp/{b2c-config → b2c-mcp-config}/SKILL.md +10 -9
  33. package/content/guidance/mcp/{debugger → b2c-mcp-debugger}/SKILL.md +9 -8
  34. package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/SKILL.md +81 -10
  35. package/content/guidance/mcp/{server → b2c-mcp-server}/SKILL.md +49 -25
  36. package/content/guidance/storefront-next/sfnext-accessibility/SKILL.md +103 -0
  37. package/content/guidance/storefront-next/sfnext-accessibility/references/checklist.md +64 -0
  38. package/content/guidance/storefront-next/sfnext-analytics-consent/SKILL.md +91 -0
  39. package/content/guidance/storefront-next/sfnext-analytics-consent/references/CUSTOM-ADAPTER.md +49 -0
  40. package/content/guidance/storefront-next/sfnext-authentication/SKILL.md +86 -79
  41. package/content/guidance/storefront-next/sfnext-authentication/references/COOKIES.md +39 -0
  42. package/content/guidance/storefront-next/sfnext-authentication/references/LOGIN-FLOWS.md +59 -0
  43. package/content/guidance/storefront-next/sfnext-commerce-features/SKILL.md +67 -0
  44. package/content/guidance/storefront-next/sfnext-commerce-features/references/FEATURE-PREREQUISITES.md +37 -0
  45. package/content/guidance/storefront-next/sfnext-components/SKILL.md +98 -136
  46. package/content/guidance/storefront-next/sfnext-components/references/COMPONENT-AUTHORING.md +118 -0
  47. package/content/guidance/storefront-next/sfnext-components/references/SHAPE-TOKENS.md +51 -0
  48. package/content/guidance/storefront-next/sfnext-components/references/STORYBOOK.md +54 -0
  49. package/content/guidance/storefront-next/sfnext-components/references/TOKEN-SYSTEM.md +53 -0
  50. package/content/guidance/storefront-next/sfnext-components/references/TROUBLESHOOTING.md +19 -0
  51. package/content/guidance/storefront-next/sfnext-configuration/SKILL.md +116 -113
  52. package/content/guidance/storefront-next/sfnext-configuration/references/ENV-VARIABLES.md +55 -0
  53. package/content/guidance/storefront-next/sfnext-configuration/references/MULTI-SITE-URLS.md +137 -0
  54. package/content/guidance/storefront-next/sfnext-data-fetching/SKILL.md +100 -150
  55. package/content/guidance/storefront-next/sfnext-data-fetching/references/ACTIONS.md +53 -0
  56. package/content/guidance/storefront-next/sfnext-data-fetching/references/API-CLIENTS.md +34 -0
  57. package/content/guidance/storefront-next/sfnext-data-fetching/references/LOADERS.md +73 -0
  58. package/content/guidance/storefront-next/sfnext-data-fetching/references/SCAPI-FETCHER.md +23 -77
  59. package/content/guidance/storefront-next/sfnext-deployment/SKILL.md +83 -97
  60. package/content/guidance/storefront-next/sfnext-deployment/references/MRT-DEPLOYMENT.md +37 -68
  61. package/content/guidance/storefront-next/sfnext-extensions/SKILL.md +73 -97
  62. package/content/guidance/storefront-next/sfnext-extensions/references/ACTION-HOOKS.md +57 -0
  63. package/content/guidance/storefront-next/sfnext-extensions/references/BASE-AUDIT.md +47 -44
  64. package/content/guidance/storefront-next/sfnext-extensions/references/CLI-AND-INSTALL.md +58 -0
  65. package/content/guidance/storefront-next/sfnext-extensions/references/EXTENSION-EXAMPLES.md +49 -86
  66. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/SKILL.md +59 -114
  67. package/content/guidance/storefront-next/sfnext-hybrid-storefronts/references/HYBRID-PROXY-CONFIG.md +53 -90
  68. package/content/guidance/storefront-next/sfnext-i18n/SKILL.md +96 -131
  69. package/content/guidance/storefront-next/sfnext-i18n/references/locale-config.md +35 -0
  70. package/content/guidance/storefront-next/sfnext-overview/SKILL.md +101 -0
  71. package/content/guidance/storefront-next/sfnext-page-designer/SKILL.md +152 -131
  72. package/content/guidance/storefront-next/sfnext-page-designer/references/BUSINESS-MANAGER.md +46 -0
  73. package/content/guidance/storefront-next/sfnext-page-designer/references/COMPONENT-REGISTRY.md +86 -53
  74. package/content/guidance/storefront-next/sfnext-page-designer/references/DECORATOR-PATTERNS.md +119 -131
  75. package/content/guidance/storefront-next/sfnext-page-designer/references/REVIEW-CHECKLIST.md +83 -0
  76. package/content/guidance/storefront-next/sfnext-page-designer/references/TROUBLESHOOTING.md +35 -0
  77. package/content/guidance/storefront-next/sfnext-performance/SKILL.md +75 -105
  78. package/content/guidance/storefront-next/sfnext-performance/references/PERFORMANCE-REVIEW-CHECKLIST.md +85 -0
  79. package/content/guidance/storefront-next/sfnext-performance/references/SUSPENSE-AND-STREAMING.md +58 -0
  80. package/content/guidance/storefront-next/sfnext-project-setup/SKILL.md +103 -116
  81. package/content/guidance/storefront-next/sfnext-project-setup/references/PROJECT-STRUCTURE.md +61 -99
  82. package/content/guidance/storefront-next/sfnext-project-setup/references/SCRIPTS.md +47 -0
  83. package/content/guidance/storefront-next/sfnext-project-setup/references/SFNEXT-CLI.md +63 -0
  84. package/content/guidance/storefront-next/sfnext-quality-gates/SKILL.md +70 -0
  85. package/content/guidance/storefront-next/sfnext-quality-gates/references/lint-and-budgets.md +39 -0
  86. package/content/guidance/storefront-next/sfnext-revalidation/SKILL.md +121 -0
  87. package/content/guidance/storefront-next/sfnext-revalidation/references/POLICIES-AND-TAGS.md +55 -0
  88. package/content/guidance/storefront-next/sfnext-routing/SKILL.md +86 -143
  89. package/content/guidance/storefront-next/sfnext-routing/references/ROUTE-CONVENTIONS.md +51 -51
  90. package/content/guidance/storefront-next/sfnext-routing/references/URLS-AND-SEO-ROUTES.md +22 -0
  91. package/content/guidance/storefront-next/sfnext-scapi/SKILL.md +126 -0
  92. package/content/guidance/storefront-next/sfnext-scapi/references/WORKED-EXAMPLE.md +39 -0
  93. package/content/guidance/storefront-next/sfnext-security/SKILL.md +129 -0
  94. package/content/guidance/storefront-next/sfnext-security/references/COOKIE-DOMAIN.md +39 -0
  95. package/content/guidance/storefront-next/sfnext-security/references/TURNSTILE.md +43 -0
  96. package/content/guidance/storefront-next/sfnext-seo/SKILL.md +95 -0
  97. package/content/guidance/storefront-next/sfnext-seo/references/MULTI-DOMAIN-BASE-PATH.md +17 -0
  98. package/content/guidance/storefront-next/sfnext-seo/references/SEO-ROUTES.md +31 -0
  99. package/content/guidance/storefront-next/sfnext-state-management/SKILL.md +80 -89
  100. package/content/guidance/storefront-next/sfnext-state-management/references/PATTERNS.md +45 -0
  101. package/content/guidance/storefront-next/sfnext-testing/SKILL.md +105 -138
  102. package/content/guidance/storefront-next/sfnext-testing/references/E2E.md +38 -0
  103. package/content/guidance/storefront-next/sfnext-testing/references/STORYBOOK-PATTERNS.md +73 -94
  104. package/content/guidance/storefront-next/sfnext-testing/references/UNIT-AND-ROUTE-TESTS.md +60 -0
  105. package/content/guidance/storefront-next/sfnext-theming/SKILL.md +104 -0
  106. package/content/guidance/storefront-next/sfnext-theming/references/REBRAND-CHECKLIST.md +29 -0
  107. package/dist/commands/mcp.d.ts +8 -2
  108. package/dist/commands/mcp.js +54 -20
  109. package/dist/guidance.d.ts +4 -1
  110. package/dist/guidance.js +23 -5
  111. package/dist/registry.d.ts +2 -1
  112. package/dist/registry.js +3 -3
  113. package/dist/server.d.ts +10 -0
  114. package/dist/server.js +21 -0
  115. package/dist/skill-references.js +5 -5
  116. package/dist/tools/cartridges/index.js +1 -0
  117. package/dist/tools/cip/index.js +6 -3
  118. package/dist/tools/diagnostics/debug-capture-at-breakpoint.js +1 -1
  119. package/dist/tools/diagnostics/debug-set-breakpoints.js +1 -1
  120. package/dist/tools/diagnostics/debug-start-session.js +1 -1
  121. package/dist/tools/scapi/index.d.ts +4 -1
  122. package/dist/tools/scapi/index.js +4 -2
  123. package/dist/tools/scapi/scapi-code.d.ts +2 -2
  124. package/dist/tools/scapi/scapi-code.js +17 -61
  125. package/dist/utils/types.d.ts +6 -0
  126. package/node_modules/@salesforce/b2c-agent-plugins/CHANGELOG.md +20 -0
  127. package/node_modules/@salesforce/b2c-agent-plugins/README.md +5 -0
  128. package/node_modules/@salesforce/b2c-agent-plugins/b2c/.codex-plugin/plugin.json +1 -1
  129. package/node_modules/@salesforce/b2c-agent-plugins/b2c/plugin.json +1 -1
  130. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-hooks/references/ORDER-HOOK-LIFECYCLE.md +1 -1
  131. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-onboarding/SKILL.md +4 -4
  132. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-ordering/SKILL.md +2 -2
  133. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-querying-data/SKILL.md +2 -2
  134. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-admin/SKILL.md +3 -3
  135. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-admin/references/CLIENT-EXAMPLES.md +4 -4
  136. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-shopper/SKILL.md +6 -6
  137. package/node_modules/@salesforce/b2c-agent-plugins/b2c/skills/b2c-scapi-shopper/references/CLIENT-EXAMPLES.md +8 -9
  138. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/.codex-plugin/plugin.json +1 -1
  139. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/plugin.json +1 -1
  140. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-cip/SKILL.md +3 -3
  141. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-cip/references/SALES_ANALYSIS.md +1 -1
  142. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-config/SKILL.md +31 -21
  143. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-content/SKILL.md +1 -1
  144. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-debug/SKILL.md +1 -1
  145. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-docs/SKILL.md +23 -2
  146. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-ecdn/references/ADVANCED.md +1 -1
  147. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-job/references/IMPORT.md +1 -1
  148. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-metrics/SKILL.md +1 -1
  149. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-mrt/SKILL.md +3 -3
  150. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-scapi-custom/SKILL.md +1 -1
  151. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-scapi-schemas/SKILL.md +1 -1
  152. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-site-import-export/SKILL.md +1 -1
  153. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-sites/SKILL.md +1 -1
  154. package/node_modules/@salesforce/b2c-agent-plugins/b2c-cli/skills/b2c-slas/SKILL.md +1 -1
  155. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/.codex-plugin/plugin.json +1 -1
  156. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/plugin.json +1 -1
  157. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-checkout-triage/SKILL.md +2 -2
  158. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-job-health/SKILL.md +2 -2
  159. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-order-failure-triage/SKILL.md +1 -1
  160. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-order-failure-triage/references/order-evidence.md +2 -2
  161. package/node_modules/@salesforce/b2c-agent-plugins/b2c-ops/skills/b2c-production-triage/SKILL.md +4 -4
  162. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/README.md +4 -4
  163. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/SKILL.md +76 -73
  164. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/evals/trigger-evals.json +12 -10
  165. package/node_modules/@salesforce/b2c-agent-plugins/figma-to-sfnext-pagedesigner/skills/figma-to-sfnext-pagedesigner/references/PAGE-DESIGNER-SFN.md +49 -74
  166. package/node_modules/@salesforce/b2c-agent-plugins/package.json +1 -1
  167. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/.codex-plugin/plugin.json +9 -6
  168. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/README.md +43 -22
  169. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/plugin.json +9 -6
  170. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/SKILL.md +103 -0
  171. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/evals/trigger-evals.json +5 -0
  172. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-accessibility/references/checklist.md +64 -0
  173. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/SKILL.md +91 -0
  174. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/evals/trigger-evals.json +5 -0
  175. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-analytics-consent/references/CUSTOM-ADAPTER.md +49 -0
  176. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/SKILL.md +86 -79
  177. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/evals/trigger-evals.json +5 -0
  178. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/references/COOKIES.md +39 -0
  179. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-authentication/references/LOGIN-FLOWS.md +59 -0
  180. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/SKILL.md +67 -0
  181. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/evals/trigger-evals.json +5 -0
  182. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-commerce-features/references/FEATURE-PREREQUISITES.md +37 -0
  183. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/SKILL.md +98 -136
  184. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/evals/trigger-evals.json +5 -0
  185. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/COMPONENT-AUTHORING.md +118 -0
  186. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/SHAPE-TOKENS.md +51 -0
  187. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/STORYBOOK.md +54 -0
  188. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/TOKEN-SYSTEM.md +53 -0
  189. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-components/references/TROUBLESHOOTING.md +19 -0
  190. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/SKILL.md +116 -113
  191. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/evals/trigger-evals.json +5 -0
  192. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/references/ENV-VARIABLES.md +55 -0
  193. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-configuration/references/MULTI-SITE-URLS.md +137 -0
  194. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/SKILL.md +100 -150
  195. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/evals/trigger-evals.json +5 -0
  196. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/ACTIONS.md +53 -0
  197. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/API-CLIENTS.md +34 -0
  198. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/LOADERS.md +73 -0
  199. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/SCAPI-FETCHER.md +23 -77
  200. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/SKILL.md +83 -97
  201. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/evals/trigger-evals.json +5 -0
  202. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-deployment/references/MRT-DEPLOYMENT.md +37 -68
  203. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/SKILL.md +73 -97
  204. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/evals/trigger-evals.json +5 -0
  205. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/ACTION-HOOKS.md +57 -0
  206. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/BASE-AUDIT.md +47 -44
  207. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/CLI-AND-INSTALL.md +58 -0
  208. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-extensions/references/EXTENSION-EXAMPLES.md +49 -86
  209. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/SKILL.md +59 -114
  210. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/evals/trigger-evals.json +5 -0
  211. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-hybrid-storefronts/references/HYBRID-PROXY-CONFIG.md +53 -90
  212. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/SKILL.md +96 -131
  213. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/evals/trigger-evals.json +5 -0
  214. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-i18n/references/locale-config.md +35 -0
  215. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-overview/SKILL.md +101 -0
  216. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-overview/evals/trigger-evals.json +5 -0
  217. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/SKILL.md +152 -131
  218. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/evals/trigger-evals.json +5 -0
  219. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/BUSINESS-MANAGER.md +46 -0
  220. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/COMPONENT-REGISTRY.md +86 -53
  221. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/DECORATOR-PATTERNS.md +119 -131
  222. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/REVIEW-CHECKLIST.md +83 -0
  223. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-page-designer/references/TROUBLESHOOTING.md +35 -0
  224. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/SKILL.md +75 -105
  225. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/evals/trigger-evals.json +5 -0
  226. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/references/PERFORMANCE-REVIEW-CHECKLIST.md +85 -0
  227. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-performance/references/SUSPENSE-AND-STREAMING.md +58 -0
  228. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/SKILL.md +103 -116
  229. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/evals/trigger-evals.json +5 -0
  230. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/PROJECT-STRUCTURE.md +61 -99
  231. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/SCRIPTS.md +47 -0
  232. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/SFNEXT-CLI.md +63 -0
  233. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/SKILL.md +70 -0
  234. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/evals/trigger-evals.json +5 -0
  235. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-quality-gates/references/lint-and-budgets.md +39 -0
  236. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/SKILL.md +121 -0
  237. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/evals/trigger-evals.json +5 -0
  238. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-revalidation/references/POLICIES-AND-TAGS.md +55 -0
  239. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/SKILL.md +86 -143
  240. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/evals/trigger-evals.json +5 -0
  241. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/references/ROUTE-CONVENTIONS.md +51 -51
  242. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-routing/references/URLS-AND-SEO-ROUTES.md +22 -0
  243. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/SKILL.md +126 -0
  244. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/evals/trigger-evals.json +5 -0
  245. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi/references/WORKED-EXAMPLE.md +39 -0
  246. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/SKILL.md +129 -0
  247. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/evals/trigger-evals.json +5 -0
  248. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/references/COOKIE-DOMAIN.md +39 -0
  249. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-security/references/TURNSTILE.md +43 -0
  250. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/SKILL.md +95 -0
  251. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/evals/trigger-evals.json +5 -0
  252. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/references/MULTI-DOMAIN-BASE-PATH.md +17 -0
  253. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-seo/references/SEO-ROUTES.md +31 -0
  254. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/SKILL.md +80 -89
  255. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/evals/trigger-evals.json +5 -0
  256. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-state-management/references/PATTERNS.md +45 -0
  257. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/SKILL.md +105 -138
  258. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/evals/trigger-evals.json +5 -0
  259. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/E2E.md +38 -0
  260. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/STORYBOOK-PATTERNS.md +73 -94
  261. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-testing/references/UNIT-AND-ROUTE-TESTS.md +60 -0
  262. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/SKILL.md +104 -0
  263. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/evals/trigger-evals.json +5 -0
  264. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-theming/references/REBRAND-CHECKLIST.md +29 -0
  265. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next-figma/skills/sfnext-create-figma-kit/SKILL.md +3 -3
  266. package/oclif.manifest.json +21 -4
  267. package/package.json +3 -3
  268. package/content/guidance/storefront-next/sfnext-create-component/SKILL.md +0 -195
  269. package/content/guidance/storefront-next/sfnext-create-component/references/COMPONENT-AUTHORING.md +0 -206
  270. package/content/guidance/storefront-next/sfnext-create-component/references/PROJECT-STRUCTURE.md +0 -43
  271. package/content/guidance/storefront-next/sfnext-create-component/references/TOKEN-SYSTEM.md +0 -130
  272. package/content/guidance/storefront-next/sfnext-create-component/references/TROUBLESHOOTING.md +0 -34
  273. package/content/guidance/storefront-next/sfnext-create-vertical/SKILL.md +0 -135
  274. package/content/guidance/storefront-next/sfnext-create-vertical/references/COMPONENT-AUTHORING.md +0 -206
  275. package/content/guidance/storefront-next/sfnext-create-vertical/references/PROJECT-STRUCTURE.md +0 -43
  276. package/content/guidance/storefront-next/sfnext-create-vertical/references/TOKEN-SYSTEM.md +0 -130
  277. package/content/guidance/storefront-next/sfnext-create-vertical/references/TROUBLESHOOTING.md +0 -34
  278. package/content/guidance/storefront-next/sfnext-custom-apis/SKILL.md +0 -221
  279. package/content/guidance/storefront-next/sfnext-custom-apis/references/WORKFLOW-EXAMPLES.md +0 -294
  280. package/content/guidance/storefront-next/sfnext-data-fetching/references/LOADER-PATTERNS.md +0 -102
  281. package/content/guidance/storefront-next/sfnext-project-setup/references/ENV-VARIABLES.md +0 -82
  282. package/content/guidance/storefront-next/sfnext-scapi-management/SKILL.md +0 -203
  283. package/content/guidance/storefront-next/sfnext-scapi-management/references/CLI-COMMANDS.md +0 -122
  284. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/SKILL.md +0 -195
  285. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/evals/trigger-evals.json +0 -12
  286. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/COMPONENT-AUTHORING.md +0 -206
  287. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/PROJECT-STRUCTURE.md +0 -43
  288. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/TOKEN-SYSTEM.md +0 -130
  289. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-component/references/TROUBLESHOOTING.md +0 -34
  290. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/SKILL.md +0 -135
  291. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/evals/trigger-evals.json +0 -12
  292. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/COMPONENT-AUTHORING.md +0 -206
  293. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/PROJECT-STRUCTURE.md +0 -43
  294. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/TOKEN-SYSTEM.md +0 -130
  295. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-create-vertical/references/TROUBLESHOOTING.md +0 -34
  296. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/SKILL.md +0 -221
  297. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/evals/trigger-evals.json +0 -12
  298. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-custom-apis/references/WORKFLOW-EXAMPLES.md +0 -294
  299. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-data-fetching/references/LOADER-PATTERNS.md +0 -102
  300. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-project-setup/references/ENV-VARIABLES.md +0 -82
  301. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/SKILL.md +0 -203
  302. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/evals/trigger-evals.json +0 -12
  303. package/node_modules/@salesforce/b2c-agent-plugins/storefront-next/skills/sfnext-scapi-management/references/CLI-COMMANDS.md +0 -122
  304. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/custom-apis.md +0 -0
  305. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/custom-properties.md +0 -0
  306. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/jobs.md +0 -0
  307. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/products.md +0 -0
  308. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/promotions.md +0 -0
  309. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/saving.md +0 -0
  310. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/snippets.md +0 -0
  311. /package/content/guidance/mcp/{scapi → b2c-mcp-scapi}/references/tokens.md +0 -0
  312. /package/content/guidance/mcp/{server → b2c-mcp-server}/references/files.md +0 -0
@@ -1,294 +0,0 @@
1
- # Workflow Examples
2
-
3
- Complete end-to-end examples showing the full lifecycle from custom API creation through calling from a Storefront Next storefront.
4
-
5
- ## Example 1: Shopper Custom API — Loyalty Points
6
-
7
- A customer-facing API that retrieves and redeems loyalty points.
8
-
9
- ### Cartridge Structure
10
-
11
- ```
12
- loyalty-cartridge/cartridge/rest-apis/loyalty-points/
13
- ├── schema.yaml
14
- ├── api.json
15
- └── script.js
16
- ```
17
-
18
- ### schema.yaml
19
-
20
- ```yaml
21
- openapi: "3.0.0"
22
- info:
23
- title: Loyalty Points API
24
- version: "v1"
25
- paths:
26
- /points/{customerId}:
27
- get:
28
- operationId: getPoints
29
- parameters:
30
- - name: customerId
31
- in: path
32
- required: true
33
- schema:
34
- type: string
35
- - name: siteId
36
- in: query
37
- required: true
38
- schema:
39
- type: string
40
- responses:
41
- "200":
42
- description: Customer loyalty points
43
- content:
44
- application/json:
45
- schema:
46
- $ref: "#/components/schemas/LoyaltyBalance"
47
- /points/{customerId}/redeem:
48
- post:
49
- operationId: redeemPoints
50
- parameters:
51
- - name: customerId
52
- in: path
53
- required: true
54
- schema:
55
- type: string
56
- - name: siteId
57
- in: query
58
- required: true
59
- schema:
60
- type: string
61
- requestBody:
62
- required: true
63
- content:
64
- application/json:
65
- schema:
66
- $ref: "#/components/schemas/RedeemRequest"
67
- responses:
68
- "200":
69
- description: Redemption result
70
- content:
71
- application/json:
72
- schema:
73
- $ref: "#/components/schemas/RedeemResult"
74
- components:
75
- schemas:
76
- LoyaltyBalance:
77
- type: object
78
- properties:
79
- customerId:
80
- type: string
81
- points:
82
- type: integer
83
- tier:
84
- type: string
85
- enum: [bronze, silver, gold, platinum]
86
- lastUpdated:
87
- type: string
88
- format: date-time
89
- RedeemRequest:
90
- type: object
91
- required: [points]
92
- properties:
93
- points:
94
- type: integer
95
- minimum: 1
96
- RedeemResult:
97
- type: object
98
- properties:
99
- success:
100
- type: boolean
101
- remainingPoints:
102
- type: integer
103
- transactionId:
104
- type: string
105
- ```
106
-
107
- ### api.json
108
-
109
- ```json
110
- {
111
- "type": "shopper",
112
- "version": "v1"
113
- }
114
- ```
115
-
116
- ### Deploy and Register
117
-
118
- ```bash
119
- # deploy the cartridge
120
- b2c code deploy ./loyalty-cartridge --activate
121
-
122
- # verify registration
123
- b2c scapi custom status --api-name loyalty-points
124
- ```
125
-
126
- ### Add to Storefront Next Project
127
-
128
- ```bash
129
- b2c sfnext scapi add custom loyalty-points v1
130
- ```
131
-
132
- ### Discover and Use
133
-
134
- ```bash
135
- # check endpoints
136
- b2c scapi schemas get custom loyalty-points v1 --list-paths
137
-
138
- # inspect response shape
139
- b2c scapi schemas get custom loyalty-points v1 \
140
- --expand-paths /points/{customerId} \
141
- --expand-schemas LoyaltyBalance
142
- ```
143
-
144
- ### Storefront Code
145
-
146
- ```typescript
147
- // src/routes/_app.account.loyalty.tsx
148
- import { createApiClients } from '@/lib/api-clients';
149
- import { createPage } from '@/lib/create-page';
150
-
151
- interface LoyaltyPageData {
152
- balance: Promise<LoyaltyBalance>;
153
- }
154
-
155
- export function loader({ context }: LoaderFunctionArgs): LoyaltyPageData {
156
- const clients = createApiClients(context);
157
- const customerId = context.session.customerId;
158
-
159
- return {
160
- balance: clients.loyaltyPoints.getPoints({
161
- params: {
162
- path: { customerId },
163
- query: { siteId: context.siteId }
164
- }
165
- }).then(({ data }) => data),
166
- };
167
- }
168
-
169
- export default createPage<LoyaltyPageData>(({ data }) => (
170
- <div className="space-y-4">
171
- <h1 className="text-2xl font-bold">Loyalty Points</h1>
172
- <Suspense fallback={<Skeleton className="h-24" />}>
173
- <Await resolve={data.balance}>
174
- {(balance) => (
175
- <div className="rounded-lg border p-6">
176
- <p className="text-4xl font-bold">{balance.points}</p>
177
- <p className="text-muted-foreground">
178
- {balance.tier} tier
179
- </p>
180
- </div>
181
- )}
182
- </Await>
183
- </Suspense>
184
- </div>
185
- ));
186
- ```
187
-
188
- ---
189
-
190
- ## Example 2: Admin Custom API — Inventory Check
191
-
192
- An admin API for back-office inventory operations. Admin APIs use BearerToken auth and do not require `siteId`.
193
-
194
- ### Key Differences from Shopper APIs
195
-
196
- | Aspect | This Example | Example 1 (Shopper) |
197
- |--------|-------------|---------------------|
198
- | api.json `type` | `"admin"` | `"shopper"` |
199
- | Auth | BearerToken (Account Manager) | ShopperToken (SLAS) |
200
- | `siteId` param | Not required | Required |
201
- | Typical caller | Admin tools, cron jobs | Storefront loaders |
202
-
203
- ### api.json
204
-
205
- ```json
206
- {
207
- "type": "admin",
208
- "version": "v1"
209
- }
210
- ```
211
-
212
- ### Usage in Storefront Context
213
-
214
- Admin APIs are typically NOT called from storefront loaders (since storefronts use shopper auth). If you need admin-level data in a storefront, consider:
215
-
216
- 1. Using a shopper API that exposes the same data with appropriate access controls
217
- 2. Pre-computing results and storing them in a custom object accessible via shopper APIs
218
-
219
- ---
220
-
221
- ## Example 3: useScapiFetcher with Custom API
222
-
223
- Interactive pattern for fetching custom API data after page load (e.g., showing loyalty points in a modal that opens on click).
224
-
225
- ```typescript
226
- // src/hooks/use-loyalty-points.ts
227
- import { useScapiFetcher } from '@/hooks/use-scapi-fetcher';
228
- import { useMemo, useCallback } from 'react';
229
-
230
- export function useLoyaltyPoints(customerId: string | undefined) {
231
- const parameters = useMemo(
232
- () => customerId ? {
233
- params: {
234
- path: { customerId },
235
- query: { siteId: getSiteId() }
236
- }
237
- } : null,
238
- [customerId]
239
- );
240
-
241
- const fetcher = useScapiFetcher(
242
- 'loyaltyPoints',
243
- 'getPoints',
244
- parameters
245
- );
246
-
247
- const refresh = useCallback(async () => {
248
- if (parameters) {
249
- await fetcher.load();
250
- }
251
- }, [fetcher, parameters]);
252
-
253
- return {
254
- points: fetcher.data?.points ?? 0,
255
- tier: fetcher.data?.tier ?? 'bronze',
256
- isLoading: fetcher.state === 'loading',
257
- refresh,
258
- };
259
- }
260
- ```
261
-
262
- ```typescript
263
- // src/components/loyalty-badge.tsx
264
- import { useLoyaltyPoints } from '@/hooks/use-loyalty-points';
265
-
266
- export function LoyaltyBadge({ customerId }: { customerId: string }) {
267
- const { points, tier, isLoading, refresh } = useLoyaltyPoints(customerId);
268
-
269
- useEffect(() => {
270
- refresh();
271
- }, [refresh]);
272
-
273
- if (isLoading) return <Skeleton className="h-6 w-16" />;
274
-
275
- return (
276
- <Badge variant={tier === 'platinum' ? 'default' : 'secondary'}>
277
- {points} pts
278
- </Badge>
279
- );
280
- }
281
- ```
282
-
283
- ### How It Works
284
-
285
- ```
286
- LoyaltyBadge renders
287
- → useLoyaltyPoints calls useScapiFetcher('loyaltyPoints', 'getPoints', params)
288
- → fetcher.load() sends GET to /resource/api/client/{encoded-params}
289
- → Resource route runs ON SERVER
290
- → createApiClients(context).loyaltyPoints.getPoints({...}) calls SCAPI
291
- → JSON response returned to component
292
- ```
293
-
294
- The custom API call happens server-side even though it's triggered from a client component.
@@ -1,102 +0,0 @@
1
- # Loader Patterns Reference
2
-
3
- ## Data Flow
4
-
5
- ### Initial Page Load (SSR)
6
-
7
- ```
8
- Browser request → MRT Server
9
- ↓
10
- loader() runs on server
11
- ↓
12
- SCAPI requests on MRT
13
- ↓
14
- HTML response streamed → Browser
15
- ```
16
-
17
- ### Subsequent Navigation (SPA)
18
-
19
- ```
20
- User clicks link → React Router intercepts
21
- ↓
22
- Browser fetches from server
23
- ↓
24
- MRT Server runs same loader()
25
- ↓
26
- SCAPI requests on MRT
27
- ↓
28
- JSON response → Browser
29
- ↓
30
- React updates DOM
31
- ```
32
-
33
- The loader code is identical for SSR and SPA navigation — only the response format differs (HTML vs JSON).
34
-
35
- ## Decision Tree: Which Pattern to Use
36
-
37
- ```
38
- Need data for page render?
39
- ├── Critical for SEO / above-the-fold?
40
- │ └── Use awaited data (async loader with await)
41
- ├── Non-critical / below-the-fold?
42
- │ └── Use deferred data (sync loader, return promises)
43
- └── Mix of both?
44
- └── Use mixed strategy (await critical, stream rest)
45
-
46
- Need to handle mutations?
47
- └── Use action function
48
-
49
- Need data after page load (user interaction)?
50
- └── Use useScapiFetcher
51
- ```
52
-
53
- ## Pattern: Multiple API Calls with Dependencies
54
-
55
- When one API call depends on another's result:
56
-
57
- ```typescript
58
- export async function loader({ params, context }: LoaderFunctionArgs) {
59
- const clients = createApiClients(context);
60
-
61
- // First call — must resolve before dependent calls
62
- const category = await clients.shopperProducts.getCategory({
63
- params: { path: { id: params.categoryId } }
64
- }).then(({ data }) => data);
65
-
66
- // Dependent calls — can run in parallel with each other
67
- return {
68
- category,
69
- products: clients.shopperSearch.productSearch({
70
- params: { query: { refine: `cgid=${category.id}` } }
71
- }).then(({ data }) => data),
72
- refinements: clients.shopperSearch.getSearchSuggestions({
73
- params: { query: { q: category.name } }
74
- }).then(({ data }) => data),
75
- };
76
- }
77
- ```
78
-
79
- ## Pattern: Conditional Data Loading
80
-
81
- ```typescript
82
- export function loader({ params, context }: LoaderFunctionArgs) {
83
- const clients = createApiClients(context);
84
- const auth = getAuth(context);
85
-
86
- const base = {
87
- product: clients.shopperProducts.getProduct({
88
- params: { path: { id: params.productId } }
89
- }).then(({ data }) => data),
90
- };
91
-
92
- // Only fetch wishlist for registered users
93
- if (auth.userType === 'registered') {
94
- return {
95
- ...base,
96
- wishlist: clients.shopperCustomers.getWishlist({...}).then(({ data }) => data),
97
- };
98
- }
99
-
100
- return base;
101
- }
102
- ```
@@ -1,82 +0,0 @@
1
- # Environment Variables Reference
2
-
3
- ## Naming Convention
4
-
5
- Environment variables use the `PUBLIC__` prefix with double underscore (`__`) separators to map to configuration paths:
6
-
7
- ```bash
8
- # Pattern: PUBLIC__app__{path}__{to}__{property}=value
9
- PUBLIC__app__commerce__api__clientId=abc123
10
- # Maps to: config.app.commerce.api.clientId
11
- # Accessed as: getConfig(context).commerce.api.clientId
12
- ```
13
-
14
- ## Rules
15
-
16
- 1. **`PUBLIC__` prefix** — Exposed to browser (client-safe values only)
17
- 2. **No prefix** — Server-only secrets (never sent to client)
18
- 3. **`__` separator** — Navigates nested config paths
19
- 4. **Case-insensitive** — All casings work (normalized to match `config.server.ts`)
20
- 5. **Auto-parsing** — Strings, numbers, booleans, JSON arrays/objects parsed automatically
21
- 6. **Validation** — Paths must exist in `config.server.ts` (prevents typos)
22
- 7. **Depth limit** — Maximum 10 levels deep (use JSON for deeper nesting)
23
- 8. **Path precedence** — More specific paths override less specific ones
24
- 9. **Protected paths** — `app__engagement` cannot be overridden via environment variables
25
- 10. **MRT limits** — Variable names max 512 characters, total `PUBLIC__` values max 32KB
26
-
27
- ## Required Variables
28
-
29
- | Variable | Description |
30
- |----------|-------------|
31
- | `PUBLIC__app__commerce__api__clientId` | SLAS client ID |
32
- | `PUBLIC__app__commerce__api__organizationId` | Commerce Cloud organization ID |
33
- | `PUBLIC__app__commerce__api__siteId` | Default site ID |
34
- | `PUBLIC__app__commerce__api__shortCode` | API short code |
35
- | `PUBLIC__app__defaultSiteId` | Default site ID for routing |
36
- | `PUBLIC__app__commerce__sites` | JSON array of site configurations |
37
-
38
- ## Server-Only Variables
39
-
40
- ```bash
41
- # Server-only secrets (no PUBLIC__ prefix)
42
- COMMERCE_API_SLAS_SECRET=your-slas-secret
43
- ```
44
-
45
- Access server-only secrets via `process.env` directly — never add them to the config system.
46
-
47
- ## Multi-Site Configuration
48
-
49
- The `commerce.sites` array defines site configurations:
50
-
51
- ```bash
52
- PUBLIC__app__commerce__sites='[
53
- {
54
- "id": "RefArchGlobal",
55
- "defaultLocale": "en-US",
56
- "defaultCurrency": "USD",
57
- "supportedLocales": [
58
- {"id": "en-US", "preferredCurrency": "USD"},
59
- {"id": "de-DE", "preferredCurrency": "EUR"}
60
- ],
61
- "supportedCurrencies": ["USD", "EUR"]
62
- }
63
- ]'
64
- ```
65
-
66
- ## Setting Complex Values
67
-
68
- ```bash
69
- # Individual variables
70
- PUBLIC__app__myFeature__option1=value1
71
- PUBLIC__app__myFeature__option2=value2
72
-
73
- # Or as a single JSON value
74
- PUBLIC__app__myFeature='{"option1":"value1","option2":"value2"}'
75
- ```
76
-
77
- ## Security Guidelines
78
-
79
- | Prefix | Visibility | Use For |
80
- |--------|-----------|---------|
81
- | `PUBLIC__` | Browser + Server | Client IDs, site IDs, feature flags |
82
- | (none) | Server only | API secrets, private keys, credentials |
@@ -1,203 +0,0 @@
1
- ---
2
- name: sfnext-scapi-management
3
- description: Add, remove, and list typed SCAPI clients in a Storefront Next project using `b2c sfnext scapi` commands, and browse API schemas to discover endpoints before writing loaders. Use this skill whenever the user says 'sfnext scapi', 'add an API to my storefront next project', 'what SCAPI clients does my sfnext project have', 'remove an API client', 'list available APIs for sfnext', 'browse schema before writing a loader', or asks how to integrate a specific SCAPI (shopper-baskets, shopper-search, etc.) into their Storefront Next project as a typed client. Also use when they want to check what parameters an endpoint accepts before coding. NOT for making actual SCAPI calls from loaders — see sfnext-data-fetching. NOT for standalone schema browsing outside a Storefront Next project — see b2c-cli:b2c-scapi-schemas.
4
- ---
5
-
6
- # SCAPI Client Management Skill
7
-
8
- This skill covers managing which typed SCAPI clients are available in a Storefront Next project and how to discover their shapes before writing data-fetching code.
9
-
10
- ## Overview
11
-
12
- Storefront Next projects use typed SCAPI clients generated from OpenAPI schemas. Two complementary command sets work together:
13
-
14
- | Command Set | Purpose | When to Use |
15
- |-------------|---------|-------------|
16
- | `b2c sfnext scapi` | Manage which clients exist in your project | Adding/removing APIs, checking what's configured |
17
- | `b2c scapi schemas` | Browse API shapes (endpoints, fields, types) | Before writing a loader — discover what's available |
18
-
19
- ## Managing Project Clients
20
-
21
- ### List Available APIs
22
-
23
- See what SCAPI APIs can be added to your project:
24
-
25
- ```bash
26
- # show all APIs available to add
27
- b2c sfnext scapi available
28
-
29
- # filter by API family
30
- b2c sfnext scapi available --api-family product
31
-
32
- # JSON output for scripting
33
- b2c sfnext scapi available --json
34
- ```
35
-
36
- ### Add a Client
37
-
38
- Add a typed SCAPI client to your project. This generates type-safe client code accessible via `createApiClients(context)`:
39
-
40
- ```bash
41
- # add the shopper-products API
42
- b2c sfnext scapi add product shopper-products v1
43
-
44
- # add a custom API
45
- b2c sfnext scapi add custom my-loyalty-api v1
46
-
47
- # force re-add (overwrite existing)
48
- b2c sfnext scapi add product shopper-products v1 --force
49
- ```
50
-
51
- After adding, the client becomes available in your loaders:
52
-
53
- ```typescript
54
- import { createApiClients } from '@/lib/api-clients';
55
-
56
- export function loader({ context }: LoaderFunctionArgs) {
57
- const clients = createApiClients(context);
58
- return {
59
- product: clients.shopperProducts.getProduct({
60
- params: { path: { id: params.productId } }
61
- }).then(({ data }) => data),
62
- };
63
- }
64
- ```
65
-
66
- ### List Current Project Clients
67
-
68
- See which SCAPI clients are currently configured in your project:
69
-
70
- ```bash
71
- # list all configured clients
72
- b2c sfnext scapi list
73
-
74
- # JSON output
75
- b2c sfnext scapi list --json
76
- ```
77
-
78
- ### Remove a Client
79
-
80
- Remove an unused client to reduce bundle size:
81
-
82
- ```bash
83
- # remove a client
84
- b2c sfnext scapi remove product shopper-products
85
- ```
86
-
87
- ## Discovering API Shapes
88
-
89
- Before writing a loader or action, use `b2c scapi schemas` to explore what endpoints and fields an API offers.
90
-
91
- ### The Schema-First Workflow
92
-
93
- ```
94
- 1. b2c scapi schemas list → Find the API family/name/version
95
- 2. b2c scapi schemas get ... --list-paths → See available endpoints
96
- 3. b2c scapi schemas get ... --expand-paths → See request params + response shape
97
- 4. Write your loader using the discovered types
98
- ```
99
-
100
- ### Step 1: Find the API
101
-
102
- ```bash
103
- # list all available schemas
104
- b2c scapi schemas list
105
-
106
- # filter to product APIs
107
- b2c scapi schemas list --api-family product
108
- ```
109
-
110
- ### Step 2: See Available Endpoints
111
-
112
- ```bash
113
- # list all paths in shopper-products
114
- b2c scapi schemas get product shopper-products v1 --list-paths
115
- ```
116
-
117
- Output shows endpoints like `/products/{productId}`, `/products`, etc.
118
-
119
- ### Step 3: Expand Endpoint Details
120
-
121
- ```bash
122
- # see the full shape of a specific endpoint
123
- b2c scapi schemas get product shopper-products v1 --expand-paths /products/{productId}
124
-
125
- # see the response schema type
126
- b2c scapi schemas get product shopper-products v1 --expand-schemas Product
127
-
128
- # combine: endpoint + its response type
129
- b2c scapi schemas get product shopper-products v1 \
130
- --expand-paths /products/{productId} \
131
- --expand-schemas Product,ProductResult
132
- ```
133
-
134
- ### Step 4: Write Your Loader
135
-
136
- Now that you know the endpoint path and parameter structure, write your loader:
137
-
138
- ```typescript
139
- export function loader({ params, context }: LoaderFunctionArgs) {
140
- const clients = createApiClients(context);
141
- return {
142
- product: clients.shopperProducts.getProduct({
143
- params: { path: { id: params.productId } }
144
- }).then(({ data }) => data),
145
- };
146
- }
147
- ```
148
-
149
- ## Example: Adding and Using a New API
150
-
151
- Complete walkthrough — adding shopper-search and writing a search loader:
152
-
153
- ```bash
154
- # 1. Check what's available
155
- b2c sfnext scapi available --api-family search
156
-
157
- # 2. Add the client
158
- b2c sfnext scapi add search shopper-search v1
159
-
160
- # 3. Discover endpoints
161
- b2c scapi schemas get search shopper-search v1 --list-paths
162
-
163
- # 4. Inspect the productSearch endpoint
164
- b2c scapi schemas get search shopper-search v1 \
165
- --expand-paths /product-search \
166
- --expand-schemas ProductSearchResult
167
- ```
168
-
169
- Then write the loader:
170
-
171
- ```typescript
172
- export function loader({ request, context }: LoaderFunctionArgs) {
173
- const url = new URL(request.url);
174
- const q = url.searchParams.get('q') ?? '';
175
- const clients = createApiClients(context);
176
-
177
- return {
178
- results: clients.shopperSearch.productSearch({
179
- params: { query: { q, limit: 25 } }
180
- }).then(({ data }) => data),
181
- };
182
- }
183
- ```
184
-
185
- ## Common Pitfalls
186
-
187
- | Pitfall | Problem | Solution |
188
- |---------|---------|----------|
189
- | Writing a loader without checking the schema | Wrong parameter names or missing required fields | Run `--expand-paths` first to see exact param structure |
190
- | Adding an API but client not appearing | Missing `pnpm install` after add | Run `pnpm install` to regenerate types |
191
- | Trying to browse custom API schemas before registration | Schema returns empty/404 | Deploy and register the custom API first (see `sfnext-custom-apis`) |
192
- | Using wrong API version | Types don't match runtime behavior | Use `scapi available` to verify the current version |
193
-
194
- ## Related Skills
195
-
196
- - `storefront-next:sfnext-data-fetching` - Using the clients in loaders, actions, and useScapiFetcher
197
- - `storefront-next:sfnext-custom-apis` - End-to-end custom API implementation and consumption
198
- - `b2c-cli:b2c-scapi-schemas` - Full reference for schema browsing commands and flags
199
- - `storefront-next:sfnext-project-setup` - Project creation and initial structure
200
-
201
- ## Reference Documentation
202
-
203
- - [CLI Commands Reference](references/CLI-COMMANDS.md) - Detailed command reference for `b2c sfnext scapi`
@@ -1,12 +0,0 @@
1
- [
2
- {"query": "I just scaffolded a new storefront next project and I need to add the shopper-search API so I can build a search results page. What's the command to add it and how do I verify it's available in my createApiClients factory?", "should_trigger": true},
3
- {"query": "How do I run b2c sfnext scapi available to see which APIs I can add to my storefront next project? I want to know what's available before setting up my data fetching.", "should_trigger": true},
4
- {"query": "I need to integrate the shopper-baskets-v2 API into my storefront next checkout flow. Can you walk me through the b2c sfnext scapi add command and then checking the schema?", "should_trigger": true},
5
- {"query": "I ran b2c sfnext scapi list and see APIs I no longer use in my storefront next project. How do I remove them with scapi remove to reduce my bundle size?", "should_trigger": true},
6
- {"query": "I'm setting up a new storefront next project and want to add the shopper-customers API as a typed client. What does b2c sfnext scapi add do exactly and where does the generated client code end up?", "should_trigger": true},
7
- {"query": "I have the shopper-products client already added. Now I need to write a loader function that calls getProduct and returns the data. How do I use createApiClients in a route loader?", "should_trigger": false},
8
- {"query": "My storefront next build is failing because of TypeScript errors in my route components. How do I run the typecheck and fix the issues?", "should_trigger": false},
9
- {"query": "I want to look at all the SCAPI schemas available across Commerce Cloud without any specific project context. Just need to browse the full API catalog.", "should_trigger": false},
10
- {"query": "I need to write the server-side script.js implementation for a custom API endpoint that returns loyalty points from a custom object.", "should_trigger": false},
11
- {"query": "How do I set up the initial environment variables and dw.json for a brand new storefront next project before running pnpm dev?", "should_trigger": false}
12
- ]