@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
@@ -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 or directories). 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.",
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.3.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.3.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.11.0",
84
+ "@salesforce/b2c-tooling-sdk": "2.4.0"
85
85
  },
86
86
  "bundledDependencies": [
87
87
  "@modelcontextprotocol/server",
@@ -1,195 +0,0 @@
1
- ---
2
- name: sfnext-create-component
3
- description: Author a new Storefront Next design-system component the right way — pick the correct layer (primitive vs composite), reuse-or-extend before creating, define CVA variants bound to semantic tokens, add data-slot attributes, satisfy the accessibility checklist, and ship a Storybook story. Use when asked to create, add, or build a new UI component, button/badge/tile/card variant, or design-system primitive. This is the design-system authoring discipline; for createPage/Suspense/shadcn page-rendering patterns see sfnext-components.
4
- ---
5
-
6
- # Create a Component Skill
7
-
8
- This skill is the authoring discipline for adding a new component to a Storefront Next storefront: choosing the right layer, reusing before creating, and meeting the token / a11y / Storybook requirements that keep the design system consistent.
9
-
10
- > **It complements `sfnext-components`.** That skill covers engineering patterns — `createPage`, Suspense/`Await` streaming, shadcn/ui setup, the `cn()` utility. **This** skill covers design-system authoring — the layer model, the extend-before-create gate, CVA variants bound to semantic tokens, `data-slot`, accessibility, and story coverage. Use both together when building UI.
11
-
12
- ## Before you start — scan first (extend before create)
13
-
14
- Do not create a new component file until you have run this scan:
15
-
16
- 1. Search `src/components/` for components with a similar name or behaviour.
17
- 2. Search `src/components/ui/` for Shadcn primitives — run `npx shadcn@latest add <name>` to check whether it exists before hand-rolling one.
18
- 3. Apply the REUSE / EXTEND / CREATE decision:
19
- - **REUSE** — an existing component already does this → use it as-is.
20
- - **EXTEND** — an existing component is close → add a new CVA variant (cheaper than a new file).
21
- - **CREATE** — nothing exists → proceed with this skill.
22
-
23
- See [Component Authoring Reference](references/COMPONENT-AUTHORING.md) for the full layer model and the extend-before-create rule.
24
-
25
- ## Step 1 — Decide the layer
26
-
27
- | Question | Layer | Location |
28
- |----------|-------|----------|
29
- | Pure UI element, no data or business logic? | **Primitive** | `src/components/ui/` (check shadcn first) |
30
- | Assembles primitives or takes data props? | **Composite** | `src/components/` |
31
-
32
- For primitives, always check shadcn before hand-rolling:
33
-
34
- ```bash
35
- # from packages/template-retail-rsc-app
36
- npx shadcn@latest add <component-name>
37
- ```
38
-
39
- Shadcn components land in `src/components/ui/` already wired to the token system. If it exists in shadcn, use it — do not hand-roll a replacement.
40
-
41
- ## Step 2 — Create the file with the copyright header
42
-
43
- ```
44
- src/components/<feature>/<component-name>.tsx ← preferred (feature-grouped)
45
- src/components/<component-name>.tsx ← acceptable for standalone components
46
- ```
47
-
48
- Start every `.ts`/`.tsx` file with the Apache 2.0 copyright header (ESLint enforces it), then imports:
49
-
50
- ```tsx
51
- import * as React from 'react'
52
- import { cva, type VariantProps } from 'class-variance-authority'
53
- import { cn } from '@/lib/utils'
54
- // Import primitives from src/components/ui/ — not from @radix-ui directly
55
- import { Button } from '@/components/ui/button'
56
- ```
57
-
58
- ## Step 3 — Type the props explicitly
59
-
60
- ```tsx
61
- interface ProductTileProps {
62
- productId: string
63
- name: string
64
- price: number
65
- imageUrl: string
66
- currency?: string
67
- className?: string
68
- }
69
- ```
70
-
71
- No `any`. Extend `React.ComponentProps<'element'>` for native passthrough. Use discriminated unions for mutually exclusive prop shapes.
72
-
73
- ## Step 4 — Define CVA variants (if the component has visual states)
74
-
75
- ```tsx
76
- const productTileVariants = cva(
77
- 'relative flex flex-col overflow-hidden rounded-md bg-card text-card-foreground',
78
- {
79
- variants: {
80
- density: {
81
- comfortable: 'gap-4 p-4',
82
- compact: 'gap-2 p-2',
83
- },
84
- },
85
- defaultVariants: { density: 'comfortable' },
86
- }
87
- )
88
- ```
89
-
90
- **Token rules:** every class that affects color MUST use a semantic token utility (`bg-primary`, `text-foreground`, `border-border`, …). No raw hex, no `bg-black`, no `text-gray-500`. See [Token System Reference](references/TOKEN-SYSTEM.md).
91
-
92
- ## Step 5 — Write the component
93
-
94
- ```tsx
95
- export function ProductTile({
96
- productId,
97
- name,
98
- price,
99
- imageUrl,
100
- currency = 'USD',
101
- className,
102
- density,
103
- ...props
104
- }: ProductTileProps & VariantProps<typeof productTileVariants>) {
105
- return (
106
- <article
107
- data-slot="product-tile"
108
- data-product-id={productId}
109
- className={cn(productTileVariants({ density }), className)}
110
- {...props}
111
- >
112
- <div data-slot="product-tile-image">{/* image */}</div>
113
- <div data-slot="product-tile-body" className="flex flex-col gap-1">
114
- <span data-slot="product-tile-name" className="text-sm font-medium text-foreground">
115
- {name}
116
- </span>
117
- <span data-slot="product-tile-price" className="text-sm text-muted-foreground">
118
- {new Intl.NumberFormat('en-US', { style: 'currency', currency }).format(price)}
119
- </span>
120
- </div>
121
- </article>
122
- )
123
- }
124
- ```
125
-
126
- Required on every component:
127
- - `data-slot` on the root and each named region.
128
- - `className` accepted and merged via `cn()` **last** so callers can override.
129
- - Native props spread via `{...props}`.
130
-
131
- ## Step 6 — Create the Storybook story
132
-
133
- Every new component in `src/components/` needs a `.stories.tsx` — one story per CVA variant plus a `Snapshot` story for CI diffing.
134
-
135
- ```tsx
136
- import type { Meta, StoryObj } from '@storybook/react'
137
- import { ProductTile } from './product-tile'
138
-
139
- const meta: Meta<typeof ProductTile> = {
140
- title: 'Components/Product/ProductTile',
141
- component: ProductTile,
142
- }
143
- export default meta
144
-
145
- type Story = StoryObj<typeof ProductTile>
146
-
147
- const defaultProps = { productId: 'P001', name: 'Classic Shirt', price: 89.99, imageUrl: '/placeholder.jpg' }
148
-
149
- export const Default: Story = { args: defaultProps }
150
- export const Compact: Story = { args: { ...defaultProps, density: 'compact' } }
151
-
152
- export const Snapshot: Story = {
153
- name: 'Snapshot',
154
- render: () => (
155
- <div className="grid grid-cols-2 gap-4">
156
- <ProductTile {...defaultProps} density="comfortable" />
157
- <ProductTile {...defaultProps} density="compact" />
158
- </div>
159
- ),
160
- }
161
- ```
162
-
163
- ## Step 7 — Accessibility check
164
-
165
- - [ ] Interactive elements are `<button>` or `<a>`, never `<div onClick>`.
166
- - [ ] All form inputs have `<Label htmlFor>`.
167
- - [ ] Focus ring: `focus-visible:ring-ring focus-visible:ring-[3px]`.
168
- - [ ] No color-only information (pair with icon or text).
169
- - [ ] `aria-label` on icon-only buttons.
170
-
171
- ## Verification
172
-
173
- Before marking the task complete, run from the monorepo root:
174
-
175
- ```bash
176
- pnpm typecheck
177
- pnpm lint
178
- pnpm test-storybook:snapshot:agent
179
- ```
180
-
181
- All three must pass with zero errors and zero warnings. Lint runs with `--max-warnings 0`.
182
-
183
- ## Related Skills
184
-
185
- - `storefront-next:sfnext-components` - createPage HOC, Suspense/Await, shadcn/ui, Tailwind page-rendering patterns
186
- - `storefront-next:sfnext-testing` - Vitest unit tests and Storybook interaction/a11y tests
187
- - `storefront-next:sfnext-create-vertical` - Brand theming via the token layer
188
- - `storefront-next:sfnext-extensions` - Injecting a component into a page via UITarget
189
-
190
- ## Reference Documentation
191
-
192
- - [Component Authoring Reference](references/COMPONENT-AUTHORING.md) - Layer model, CVA, data-slot, extend-before-create
193
- - [Token System Reference](references/TOKEN-SYSTEM.md) - Semantic token classes and dark mode rules
194
- - [Project Structure Reference](references/PROJECT-STRUCTURE.md) - Where components live in the monorepo
195
- - [Troubleshooting Reference](references/TROUBLESHOOTING.md) - Token, lint, and snapshot pitfalls
@@ -1,206 +0,0 @@
1
- # Component authoring standards
2
-
3
- ## Vertical extensions — existing components always have priority
4
-
5
- When building a vertical extension (`src/extensions/<vertical>/`), check what the **base template already renders** before creating anything new.
6
-
7
- **The rule**: if a base component already renders equivalent content at the same location, do NOT create an extension component that duplicates it. Extensions add what is missing — they never recreate what already exists.
8
-
9
- ### Decision gate (run this before creating any extension component)
10
-
11
- 1. **Find the base component** — read the relevant route and trace what components it renders.
12
- 2. **Check every rendered section** — does the base already render this content (description, accordion, badge, banner, etc.)?
13
- 3. **If yes** — use a UITarget slot on the existing content, or customise it via token/variant. Do not create a parallel extension component that renders the same thing.
14
- 4. **If no** — the extension is justified. Register it at the correct UITarget.
15
-
16
- ### Concrete examples
17
-
18
- ```
19
- ❌ WRONG — base ProductView already renders a description accordion ("Overview").
20
- ProductDetailsExtension adds its own "Overview" section → duplicate.
21
-
22
- ✅ CORRECT — base already renders description + adapter sections (Specifications, Care Instructions…).
23
- ProductDetailsExtension only adds the two sections the base does NOT have:
24
- Shipping & Returns, Warranty Info.
25
- ```
26
-
27
- ```
28
- ❌ WRONG — base renders product title in ProductInfo.
29
- The vertical extension renders product title again in a brand stamp.
30
-
31
- ✅ CORRECT — brand stamp adds ONLY the brand line ("<BRAND> · <tagline>")
32
- above the existing ProductInfo, not the title.
33
- ```
34
-
35
- **Do not create duplicates unless the user explicitly asks for them.**
36
- The cost of a duplicate is paid on every page load, in every test, in every Figma sync. The correct
37
- approach is almost always a UITarget slot or a CSS token override.
38
-
39
- ---
40
-
41
- ## Extend before create — mandatory check before any new component
42
-
43
- Before writing a single line of a new component, answer these questions in order:
44
-
45
- 1. **Does an existing component already do this?** Search `src/components/` and `src/components/ui/` by name and by behaviour.
46
- 2. **Can an existing component cover this with a new CVA variant?** A new `variant` or `size` value is always cheaper than a new file.
47
- 3. **Can composition cover this?** Wrap an existing component in a thin composite rather than duplicating it.
48
- 4. **Only if all three answers are no** — create a new component.
49
-
50
- ```tsx
51
- // ❌ WRONG — creating BrandPrimaryButton when Button already exists
52
- export function BrandPrimaryButton({ children }: Props) {
53
- return <button className="bg-[#1e6f3a] text-white ...">{children}</button>
54
- }
55
-
56
- // ✅ CORRECT — new CVA variant on the existing Button primitive
57
- // In src/components/ui/button.tsx, add to buttonVariants:
58
- brand: 'bg-primary text-primary-foreground hover:bg-primary/90',
59
-
60
- // ✅ CORRECT — thin composite when behaviour differs
61
- export function AddToCartButton(props: AddToCartButtonProps) {
62
- return <Button variant="default" {...props}>Add to Cart</Button>
63
- }
64
- ```
65
-
66
- ---
67
-
68
- ## Multi-vertical extension governance
69
-
70
- When a vertical needs to extend a component, choose the right maintenance model upfront:
71
-
72
- ```
73
- Does the change only affect visual tokens (color, font, spacing)?
74
- └─ YES → CVA variant on the existing component. Token system handles most of this via brand.css.
75
- └─ NO → Is this structural change needed by only one vertical?
76
- └─ YES → src/extensions/<vertical-name>/ via UITarget injection. Never touch core.
77
- └─ NO → Will another vertical need the same structural pattern?
78
- └─ YES → Add a slot/renderProp to the BASE component.
79
- Each vertical provides its own implementation of that slot.
80
- └─ UNSURE → Build vertical-specific first (extensions/).
81
- Promote to base when a second vertical needs the same pattern.
82
- ```
83
-
84
- **Never add vertical-specific logic (if brandA / if brandB) to a shared component.** If you find yourself writing that, the slot/render-prop pattern is missing from the base component.
85
-
86
- ---
87
-
88
- ## Layer model — know which layer you are in before writing a line
89
-
90
- | Layer | Where | What lives here |
91
- |-------|-------|----------------|
92
- | **Primitive** | `src/components/ui/` | Shadcn-sourced, Radix-backed primitives. Pure rendering, no business logic, no SCAPI. |
93
- | **Composite** | `src/components/` | Assembled from primitives. May accept loaders/data props. No direct SCAPI calls. |
94
- | **Page / Route** | `src/routes/` | Loader, action, error boundary, page layout. Fetches data, passes to composites. |
95
- | **Extension** | `src/extensions/<name>/` | Opt-in additions via UITarget. Self-contained. Never modify core from inside an extension. |
96
-
97
- Do not skip layers. A page component should not build raw `<button>` elements. A primitive should not call `useFetcher`.
98
-
99
- ---
100
-
101
- ## Primitives (`src/components/ui/`)
102
-
103
- These files come from Shadcn and must be treated as infrastructure, not business components.
104
-
105
- **When extending a primitive:**
106
- - Do not edit the primitive file directly (it may be refreshed from Shadcn upstream).
107
- - Create a wrapper component in `src/components/` instead.
108
- - Re-export from the wrapper so imports stay consistent.
109
-
110
- **Allowed changes to primitive files:**
111
- - Adding a new CVA variant that maps to an existing semantic token — that's it.
112
-
113
- ---
114
-
115
- ## CVA — class-variance-authority
116
-
117
- All styled components with more than one visual state use CVA.
118
-
119
- ```tsx
120
- import { cva, type VariantProps } from 'class-variance-authority'
121
- import { cn } from '@/lib/utils'
122
-
123
- const badgeVariants = cva(
124
- 'inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors',
125
- {
126
- variants: {
127
- variant: {
128
- default: 'border-transparent bg-primary text-primary-foreground',
129
- secondary: 'border-transparent bg-secondary text-secondary-foreground',
130
- destructive: 'border-transparent bg-destructive text-white',
131
- outline: 'text-foreground',
132
- },
133
- },
134
- defaultVariants: { variant: 'default' },
135
- }
136
- )
137
- ```
138
-
139
- Rules:
140
- - Every variant value must use semantic token classes only. No raw hex.
141
- - `cn()` from `@/lib/utils` is always the last call — enables external className overrides.
142
- - Export the `*Variants` function alongside the component so it can be reused in related components.
143
-
144
- ---
145
-
146
- ## data-slot attributes
147
-
148
- Every presentational element in a component tree must carry a `data-slot` attribute for testing and Figma tracing.
149
-
150
- ```tsx
151
- // ✅
152
- <div data-slot="product-tile">
153
- <div data-slot="product-tile-image">…</div>
154
- <div data-slot="product-tile-body">…</div>
155
- </div>
156
- ```
157
-
158
- The slot name should be kebab-case and match the component name.
159
-
160
- ---
161
-
162
- ## TypeScript requirements
163
-
164
- - All props are explicitly typed. No `any`.
165
- - Use `React.ComponentProps<'element'>` to extend native element props.
166
- - Discriminated unions for components with mutually exclusive prop shapes.
167
- - `asChild` pattern (via Radix `Slot`) for polymorphic rendering — never accept an `as` prop.
168
-
169
- ---
170
-
171
- ## Copyright header
172
-
173
- Every `.ts` / `.tsx` file must begin with the Apache 2.0 header. ESLint enforces this.
174
-
175
- ---
176
-
177
- ## Naming conventions
178
-
179
- | Thing | Convention | Example |
180
- |-------|-----------|---------|
181
- | Component files | kebab-case | `product-tile.tsx` |
182
- | Component exports | PascalCase | `ProductTile` |
183
- | Variant objects (CVA) | camelCase + "Variants" suffix | `productTileVariants` |
184
- | data-slot values | kebab-case matching component | `product-tile` |
185
- | Hook files | kebab-case prefixed with "use-" | `use-cart.ts` |
186
-
187
- ---
188
-
189
- ## Storybook requirement
190
-
191
- Every new component in `src/components/` must have a `.stories.tsx` file.
192
- - One story per CVA variant.
193
- - Default export: `{ title: 'Components/ComponentName', component: ComponentName }`.
194
- - Include a snapshot story (`name: 'Snapshot'`) so CI can diff it.
195
-
196
- ---
197
-
198
- ## Accessibility checklist
199
-
200
- Before marking a component complete, verify:
201
-
202
- - [ ] Interactive elements are native `<button>` or `<a>`, not `<div onClick>`.
203
- - [ ] All inputs have an associated `<Label>` using `htmlFor` (or Radix `Label` with `asChild`).
204
- - [ ] Focus ring uses `focus-visible:ring-ring focus-visible:ring-[3px]` — matches the button primitive.
205
- - [ ] Color information is not communicated by color alone (pair with icon or text).
206
- - [ ] Motion: wrap animations in `prefers-reduced-motion` if not handled by Tailwind's `motion-safe:` prefix.