@biggora/claude-plugins 1.2.0 → 1.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 (265) hide show
  1. package/README.md +13 -4
  2. package/package.json +1 -1
  3. package/registry/registry.json +334 -244
  4. package/specs/coding.md +30 -0
  5. package/specs/pod.md +2 -0
  6. package/src/commands/skills/add.js +63 -7
  7. package/src/commands/skills/list.js +23 -52
  8. package/src/commands/skills/remove.js +26 -27
  9. package/src/commands/skills/resolve.js +155 -0
  10. package/src/commands/skills/update.js +58 -74
  11. package/src/skills/captcha/README.md +221 -0
  12. package/src/skills/captcha/SKILL.md +355 -0
  13. package/src/skills/captcha/references/captcha-types.md +254 -0
  14. package/src/skills/captcha/references/services.md +172 -0
  15. package/src/skills/captcha/references/stealth.md +238 -0
  16. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  17. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  18. package/src/skills/google-merchant-api/SKILL.md +581 -0
  19. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  20. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  21. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  22. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  23. package/src/skills/google-merchant-api/references/migration.md +267 -0
  24. package/src/skills/google-merchant-api/references/products.md +316 -0
  25. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  26. package/src/skills/google-merchant-api/references/reports.md +240 -0
  27. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  28. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  29. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  30. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  31. package/src/skills/nest-best-practices/SKILL.md +251 -0
  32. package/src/skills/nest-best-practices/references/best-practices-request-lifecycle.md +158 -0
  33. package/src/skills/nest-best-practices/references/cli-monorepo.md +106 -0
  34. package/src/skills/nest-best-practices/references/cli-overview.md +157 -0
  35. package/src/skills/nest-best-practices/references/core-controllers.md +165 -0
  36. package/src/skills/nest-best-practices/references/core-dependency-injection.md +179 -0
  37. package/src/skills/nest-best-practices/references/core-middleware.md +139 -0
  38. package/src/skills/nest-best-practices/references/core-modules.md +138 -0
  39. package/src/skills/nest-best-practices/references/core-providers.md +188 -0
  40. package/src/skills/nest-best-practices/references/faq-raw-body-hybrid.md +122 -0
  41. package/src/skills/nest-best-practices/references/fundamentals-circular-dependency.md +89 -0
  42. package/src/skills/nest-best-practices/references/fundamentals-custom-decorators.md +107 -0
  43. package/src/skills/nest-best-practices/references/fundamentals-dynamic-modules.md +125 -0
  44. package/src/skills/nest-best-practices/references/fundamentals-exception-filters.md +202 -0
  45. package/src/skills/nest-best-practices/references/fundamentals-execution-context.md +107 -0
  46. package/src/skills/nest-best-practices/references/fundamentals-guards.md +136 -0
  47. package/src/skills/nest-best-practices/references/fundamentals-interceptors.md +187 -0
  48. package/src/skills/nest-best-practices/references/fundamentals-lazy-loading.md +89 -0
  49. package/src/skills/nest-best-practices/references/fundamentals-lifecycle-events.md +87 -0
  50. package/src/skills/nest-best-practices/references/fundamentals-module-reference.md +107 -0
  51. package/src/skills/nest-best-practices/references/fundamentals-pipes.md +197 -0
  52. package/src/skills/nest-best-practices/references/fundamentals-provider-scopes.md +92 -0
  53. package/src/skills/nest-best-practices/references/fundamentals-testing.md +142 -0
  54. package/src/skills/nest-best-practices/references/graphql-overview.md +233 -0
  55. package/src/skills/nest-best-practices/references/graphql-resolvers-mutations.md +199 -0
  56. package/src/skills/nest-best-practices/references/graphql-scalars-unions-enums.md +180 -0
  57. package/src/skills/nest-best-practices/references/graphql-subscriptions.md +228 -0
  58. package/src/skills/nest-best-practices/references/microservices-grpc.md +175 -0
  59. package/src/skills/nest-best-practices/references/microservices-overview.md +221 -0
  60. package/src/skills/nest-best-practices/references/microservices-transports.md +119 -0
  61. package/src/skills/nest-best-practices/references/openapi-swagger.md +207 -0
  62. package/src/skills/nest-best-practices/references/recipes-authentication.md +97 -0
  63. package/src/skills/nest-best-practices/references/recipes-cqrs.md +176 -0
  64. package/src/skills/nest-best-practices/references/recipes-crud-generator.md +87 -0
  65. package/src/skills/nest-best-practices/references/recipes-documentation.md +93 -0
  66. package/src/skills/nest-best-practices/references/recipes-mongoose.md +153 -0
  67. package/src/skills/nest-best-practices/references/recipes-prisma.md +98 -0
  68. package/src/skills/nest-best-practices/references/recipes-terminus.md +148 -0
  69. package/src/skills/nest-best-practices/references/recipes-typeorm.md +122 -0
  70. package/src/skills/nest-best-practices/references/security-authorization.md +196 -0
  71. package/src/skills/nest-best-practices/references/security-cors-helmet-rate-limiting.md +204 -0
  72. package/src/skills/nest-best-practices/references/security-encryption-hashing.md +93 -0
  73. package/src/skills/nest-best-practices/references/techniques-caching.md +142 -0
  74. package/src/skills/nest-best-practices/references/techniques-compression-streaming-sse.md +194 -0
  75. package/src/skills/nest-best-practices/references/techniques-configuration.md +132 -0
  76. package/src/skills/nest-best-practices/references/techniques-database.md +153 -0
  77. package/src/skills/nest-best-practices/references/techniques-events.md +163 -0
  78. package/src/skills/nest-best-practices/references/techniques-fastify.md +137 -0
  79. package/src/skills/nest-best-practices/references/techniques-file-upload.md +140 -0
  80. package/src/skills/nest-best-practices/references/techniques-http-module.md +176 -0
  81. package/src/skills/nest-best-practices/references/techniques-logging.md +146 -0
  82. package/src/skills/nest-best-practices/references/techniques-mvc-serve-static.md +132 -0
  83. package/src/skills/nest-best-practices/references/techniques-queues.md +162 -0
  84. package/src/skills/nest-best-practices/references/techniques-serialization.md +158 -0
  85. package/src/skills/nest-best-practices/references/techniques-sessions-cookies.md +167 -0
  86. package/src/skills/nest-best-practices/references/techniques-task-scheduling.md +166 -0
  87. package/src/skills/nest-best-practices/references/techniques-validation.md +126 -0
  88. package/src/skills/nest-best-practices/references/techniques-versioning.md +153 -0
  89. package/src/skills/nest-best-practices/references/websockets-advanced.md +96 -0
  90. package/src/skills/nest-best-practices/references/websockets-gateways.md +215 -0
  91. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  92. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  93. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  94. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  95. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  96. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  97. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  98. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  99. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  100. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  101. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  102. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  103. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  104. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  105. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  106. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  107. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  108. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  109. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  110. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  111. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  112. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  113. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  114. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  115. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  116. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  117. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  118. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  119. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  120. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  121. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  122. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  123. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  124. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  125. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  126. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  127. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  128. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  129. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  130. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  131. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  132. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  133. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  134. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  135. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  136. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  137. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  138. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  139. package/src/skills/test-mobile-app/SKILL.md +11 -6
  140. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  141. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  142. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  143. package/src/skills/test-web-ui/SKILL.md +264 -84
  144. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  145. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  146. package/src/skills/typescript-expert/SKILL.md +145 -0
  147. package/src/skills/typescript-expert/commands/typescript-fix.md +65 -0
  148. package/src/skills/typescript-expert/references/advanced-conditional-types.md +190 -0
  149. package/src/skills/typescript-expert/references/advanced-decorators.md +243 -0
  150. package/src/skills/typescript-expert/references/advanced-mapped-types.md +223 -0
  151. package/src/skills/typescript-expert/references/advanced-template-literals.md +209 -0
  152. package/src/skills/typescript-expert/references/advanced-type-guards.md +308 -0
  153. package/src/skills/typescript-expert/references/best-practices-patterns.md +313 -0
  154. package/src/skills/typescript-expert/references/best-practices-performance.md +185 -0
  155. package/src/skills/typescript-expert/references/best-practices-tsconfig.md +242 -0
  156. package/src/skills/typescript-expert/references/core-generics.md +246 -0
  157. package/src/skills/typescript-expert/references/core-interfaces-types.md +231 -0
  158. package/src/skills/typescript-expert/references/core-type-system.md +261 -0
  159. package/src/skills/typescript-expert/references/core-utility-types.md +235 -0
  160. package/src/skills/typescript-expert/references/features-ts5x.md +370 -0
  161. package/src/skills/vite-best-practices/SKILL.md +115 -0
  162. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  163. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  164. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  165. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  166. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  167. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  168. package/codex-cli-workspace/iteration-1/benchmark.json +0 -122
  169. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +0 -13
  170. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +0 -52
  171. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +0 -163
  172. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +0 -5
  173. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +0 -58
  174. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +0 -151
  175. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +0 -5
  176. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -13
  177. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -52
  178. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -86
  179. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  180. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -58
  181. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  182. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  183. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +0 -13
  184. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +0 -52
  185. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +0 -130
  186. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +0 -5
  187. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +0 -64
  188. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +0 -209
  189. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +0 -5
  190. package/codex-cli-workspace/iteration-1/review.html +0 -1325
  191. package/gemini-cli-workspace/iteration-1/benchmark.json +0 -86
  192. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +0 -37
  193. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +0 -37
  194. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +0 -401
  195. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +0 -5
  196. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +0 -37
  197. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +0 -405
  198. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +0 -5
  199. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -37
  200. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  201. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -212
  202. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  203. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  204. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -427
  205. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  206. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +0 -32
  207. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  208. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -171
  209. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  210. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  211. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -199
  212. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  213. package/gemini-cli-workspace/iteration-1/review.html +0 -1325
  214. package/gemini-cli-workspace/iteration-2/benchmark.json +0 -173
  215. package/gemini-cli-workspace/iteration-2/benchmark.md +0 -28
  216. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +0 -37
  217. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +0 -37
  218. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +0 -195
  219. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +0 -5
  220. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +0 -37
  221. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +0 -377
  222. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +0 -5
  223. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +0 -37
  224. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  225. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -127
  226. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  227. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  228. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  229. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  230. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +0 -32
  231. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  232. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -91
  233. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  234. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  235. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -112
  236. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  237. package/gemini-cli-workspace/iteration-2/eval-viewer.html +0 -1325
  238. package/screen-recording-workspace/evals.json +0 -41
  239. package/screen-recording-workspace/iteration-1/benchmark.json +0 -102
  240. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +0 -31
  241. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +0 -11
  242. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
  243. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +0 -5
  244. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +0 -11
  245. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
  246. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +0 -5
  247. package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +0 -31
  248. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +0 -11
  249. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
  250. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +0 -5
  251. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +0 -11
  252. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
  253. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +0 -5
  254. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +0 -31
  255. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +0 -11
  256. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
  257. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +0 -5
  258. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +0 -11
  259. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
  260. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +0 -67
  261. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +0 -5
  262. package/screen-recording-workspace/iteration-1/review.html +0 -1325
  263. package/src/skills/codex-cli/evals/evals.json +0 -47
  264. package/src/skills/gemini-cli/evals/evals.json +0 -46
  265. package/src/skills/tm-search/evals/evals.json +0 -23
@@ -0,0 +1,247 @@
1
+ # Accounts Sub-API Reference
2
+
3
+ Base: `https://merchantapi.googleapis.com/accounts/v1`
4
+
5
+ ## Account Management
6
+
7
+ ### Core Account Operations
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `GET` | `/accounts/{account}` | Get account details |
12
+ | `PATCH` | `/accounts/{account}` | Update account |
13
+ | `DELETE` | `/accounts/{account}` | Delete account |
14
+ | `GET` | `/accounts` | List all accounts |
15
+ | `GET` | `/accounts/{parent}/subaccounts` | List sub-accounts |
16
+ | `POST` | `/accounts:createAndConfigure` | Create and configure new account |
17
+ | `POST` | `/accounts/{parent}/accounts:createTestAccount` | Create test account |
18
+
19
+ ### Account Object
20
+
21
+ ```json
22
+ {
23
+ "name": "accounts/123456789",
24
+ "accountId": "123456789",
25
+ "accountName": "My Store",
26
+ "languageCode": "en",
27
+ "adultContent": false,
28
+ "timeZone": {
29
+ "id": "America/New_York"
30
+ },
31
+ "accountType": "STANDALONE"
32
+ }
33
+ ```
34
+
35
+ ## Business Info
36
+
37
+ Manage store business information (address, phone, customer service).
38
+
39
+ | Method | Endpoint |
40
+ |--------|----------|
41
+ | `GET` | `/accounts/{account}/businessInfo` |
42
+ | `PATCH` | `/accounts/{account}/businessInfo` |
43
+
44
+ ```json
45
+ {
46
+ "name": "accounts/123456789/businessInfo",
47
+ "address": {
48
+ "regionCode": "US",
49
+ "postalCode": "10001",
50
+ "locality": "New York",
51
+ "administrativeArea": "NY",
52
+ "streetAddress": "123 Commerce St"
53
+ },
54
+ "phone": {
55
+ "number": "+12125551234"
56
+ },
57
+ "customerService": {
58
+ "uri": "https://example.com/support",
59
+ "email": "support@example.com",
60
+ "phone": {
61
+ "number": "+12125551234"
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## Business Identity
68
+
69
+ Manage identity attributes (minority-owned, veteran-owned, etc.).
70
+
71
+ | Method | Endpoint |
72
+ |--------|----------|
73
+ | `GET` | `/accounts/{account}/businessIdentity` |
74
+ | `PATCH` | `/accounts/{account}/businessIdentity` |
75
+
76
+ ## Shipping Settings
77
+
78
+ Configure account-level shipping rules.
79
+
80
+ | Method | Endpoint |
81
+ |--------|----------|
82
+ | `GET` | `/accounts/{account}/shippingSettings` |
83
+ | `POST` | `/accounts/{account}/shippingSettings` |
84
+
85
+ ```json
86
+ {
87
+ "name": "accounts/123456789/shippingSettings",
88
+ "services": [
89
+ {
90
+ "serviceName": "Standard Shipping",
91
+ "active": true,
92
+ "deliveryCountries": ["US"],
93
+ "currencyCode": "USD",
94
+ "deliveryTime": {
95
+ "minTransitDays": 3,
96
+ "maxTransitDays": 7,
97
+ "minHandlingDays": 0,
98
+ "maxHandlingDays": 1
99
+ },
100
+ "rateGroups": [
101
+ {
102
+ "applicableShippingLabels": [],
103
+ "singleValue": {
104
+ "flatRate": {
105
+ "amountMicros": "5990000",
106
+ "currencyCode": "USD"
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ ]
113
+ }
114
+ ```
115
+
116
+ ## Users
117
+
118
+ Manage who can access the Merchant Center account.
119
+
120
+ | Method | Endpoint |
121
+ |--------|----------|
122
+ | `GET` | `/accounts/{account}/users/{user}` |
123
+ | `GET` | `/accounts/{account}/users` |
124
+ | `POST` | `/accounts/{account}/users` |
125
+ | `PATCH` | `/accounts/{account}/users/{user}` |
126
+ | `DELETE` | `/accounts/{account}/users/{user}` |
127
+
128
+ ```json
129
+ {
130
+ "name": "accounts/123456789/users/user@example.com",
131
+ "emailAddress": "user@example.com",
132
+ "accessRights": ["STANDARD", "ADMIN"],
133
+ "state": "ACTIVE"
134
+ }
135
+ ```
136
+
137
+ **Access Rights:**
138
+ - `STANDARD` - View and manage products
139
+ - `ADMIN` - Full account control
140
+ - `PERFORMANCE_REPORTING` - View reports only
141
+
142
+ ## Programs
143
+
144
+ Manage enrollment in Google programs (Shopping Ads, Free Listings, etc.).
145
+
146
+ | Method | Endpoint |
147
+ |--------|----------|
148
+ | `GET` | `/accounts/{account}/programs/{program}` |
149
+ | `GET` | `/accounts/{account}/programs` |
150
+ | `POST` | `/accounts/{account}/programs/{program}:enable` |
151
+ | `POST` | `/accounts/{account}/programs/{program}:disable` |
152
+
153
+ Common programs: `FREE_LISTINGS`, `SHOPPING_ADS`, `FREE_LOCAL_LISTINGS`, `LOCAL_INVENTORY_ADS`
154
+
155
+ ## Regions
156
+
157
+ Define geographic regions for regional pricing and availability.
158
+
159
+ | Method | Endpoint |
160
+ |--------|----------|
161
+ | `GET` | `/accounts/{account}/regions/{region}` |
162
+ | `GET` | `/accounts/{account}/regions` |
163
+ | `POST` | `/accounts/{account}/regions` |
164
+ | `PATCH` | `/accounts/{account}/regions/{region}` |
165
+ | `DELETE` | `/accounts/{account}/regions/{region}` |
166
+ | `POST` | `/accounts/{account}/regions:batchCreate` |
167
+ | `POST` | `/accounts/{account}/regions:batchUpdate` |
168
+ | `POST` | `/accounts/{account}/regions:batchDelete` |
169
+
170
+ ```json
171
+ {
172
+ "name": "accounts/123456789/regions/northeast",
173
+ "displayName": "US Northeast",
174
+ "postalCodeArea": {
175
+ "regionCode": "US",
176
+ "postalCodes": [
177
+ { "begin": "10000", "end": "14999" },
178
+ { "begin": "06000", "end": "06999" }
179
+ ]
180
+ }
181
+ }
182
+ ```
183
+
184
+ ## Online Return Policies
185
+
186
+ | Method | Endpoint |
187
+ |--------|----------|
188
+ | `GET` | `/accounts/{account}/onlineReturnPolicies/{policy}` |
189
+ | `GET` | `/accounts/{account}/onlineReturnPolicies` |
190
+ | `POST` | `/accounts/{account}/onlineReturnPolicies` |
191
+ | `DELETE` | `/accounts/{account}/onlineReturnPolicies/{policy}` |
192
+
193
+ ## Homepage
194
+
195
+ Claim and manage your store homepage URL.
196
+
197
+ | Method | Endpoint |
198
+ |--------|----------|
199
+ | `GET` | `/accounts/{account}/homepage` |
200
+ | `PATCH` | `/accounts/{account}/homepage` |
201
+ | `POST` | `/accounts/{account}/homepage:claim` |
202
+ | `POST` | `/accounts/{account}/homepage:unclaim` |
203
+
204
+ ## Terms of Service
205
+
206
+ | Method | Endpoint |
207
+ |--------|----------|
208
+ | `GET` | `/termsOfService/{tos}` |
209
+ | `GET` | `/termsOfService:retrieveLatest` |
210
+ | `POST` | `/termsOfService/{tos}:accept` |
211
+ | `GET` | `/accounts/{account}/termsOfServiceAgreementStates/{state}` |
212
+
213
+ ## Autofeed Settings
214
+
215
+ Enable Google to auto-crawl your site for product data.
216
+
217
+ | Method | Endpoint |
218
+ |--------|----------|
219
+ | `GET` | `/accounts/{account}/autofeedSettings` |
220
+ | `PATCH` | `/accounts/{account}/autofeedSettings` |
221
+
222
+ ```json
223
+ {
224
+ "name": "accounts/123456789/autofeedSettings",
225
+ "enableProducts": true
226
+ }
227
+ ```
228
+
229
+ ## Developer Registration
230
+
231
+ Link your GCP project to Merchant Center.
232
+
233
+ | Method | Endpoint |
234
+ |--------|----------|
235
+ | `GET` | `/accounts/{account}/developerRegistration` |
236
+ | `POST` | `/accounts/{account}/developerRegistration:registerGcp` |
237
+ | `POST` | `/accounts/{account}/developerRegistration:unregisterGcp` |
238
+
239
+ ## Account Issues
240
+
241
+ List problems affecting your account.
242
+
243
+ | Method | Endpoint |
244
+ |--------|----------|
245
+ | `GET` | `/accounts/{account}/issues` |
246
+
247
+ Returns validation issues, policy violations, and suggested fixes.
@@ -0,0 +1,216 @@
1
+ # Content API for Shopping v2.1 (Legacy Reference)
2
+
3
+ **Sunset date: August 18, 2026.** Use the Merchant API for new integrations.
4
+
5
+ Base: `https://shoppingcontent.googleapis.com/content/v2.1`
6
+
7
+ ## Products
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `POST` | `/{merchantId}/products` | Insert product |
12
+ | `PATCH` | `/{merchantId}/products/{productId}` | Update product |
13
+ | `DELETE` | `/{merchantId}/products/{productId}` | Delete product |
14
+ | `GET` | `/{merchantId}/products/{productId}` | Get product |
15
+ | `GET` | `/{merchantId}/products` | List products |
16
+ | `POST` | `/products/batch` | Batch operations |
17
+
18
+ **Product ID format:** `channel:contentLanguage:targetCountry:offerId`
19
+ Example: `online:en:US:SKU-001`
20
+
21
+ ### Insert Product
22
+
23
+ ```javascript
24
+ const product = {
25
+ offerId: 'SKU-001',
26
+ title: 'Premium Wireless Headphones',
27
+ description: 'Noise-cancelling Bluetooth headphones',
28
+ link: 'https://example.com/headphones',
29
+ imageLink: 'https://example.com/images/headphones.jpg',
30
+ contentLanguage: 'en',
31
+ targetCountry: 'US',
32
+ channel: 'online',
33
+ availability: 'in stock',
34
+ condition: 'new',
35
+ price: { value: '79.99', currency: 'USD' },
36
+ brand: 'AudioBrand',
37
+ gtin: '0123456789012',
38
+ googleProductCategory: 'Electronics > Audio > Headphones',
39
+ };
40
+
41
+ const response = await fetch(
42
+ `https://shoppingcontent.googleapis.com/content/v2.1/${MERCHANT_ID}/products`,
43
+ {
44
+ method: 'POST',
45
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
46
+ body: JSON.stringify(product),
47
+ }
48
+ );
49
+ ```
50
+
51
+ ### Custom Batch
52
+
53
+ ```javascript
54
+ const batchRequest = {
55
+ entries: [
56
+ {
57
+ batchId: 1,
58
+ merchantId: MERCHANT_ID,
59
+ method: 'insert',
60
+ product: {
61
+ offerId: 'SKU-001',
62
+ title: 'Product 1',
63
+ // ...
64
+ },
65
+ },
66
+ {
67
+ batchId: 2,
68
+ merchantId: MERCHANT_ID,
69
+ method: 'insert',
70
+ product: {
71
+ offerId: 'SKU-002',
72
+ title: 'Product 2',
73
+ // ...
74
+ },
75
+ },
76
+ ],
77
+ };
78
+
79
+ const response = await fetch(
80
+ `https://shoppingcontent.googleapis.com/content/v2.1/products/batch`,
81
+ {
82
+ method: 'POST',
83
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
84
+ body: JSON.stringify(batchRequest),
85
+ }
86
+ );
87
+ ```
88
+
89
+ ## Product Statuses
90
+
91
+ | Method | Endpoint |
92
+ |--------|----------|
93
+ | `GET` | `/{merchantId}/productstatuses/{productId}` |
94
+ | `GET` | `/{merchantId}/productstatuses` |
95
+ | `POST` | `/productstatuses/batch` |
96
+
97
+ ```json
98
+ {
99
+ "productId": "online:en:US:SKU-001",
100
+ "title": "Premium Headphones",
101
+ "destinationStatuses": [
102
+ {
103
+ "destination": "SurfacesAcrossGoogle",
104
+ "status": "approved",
105
+ "approvedCountries": ["US"],
106
+ "pendingCountries": [],
107
+ "disapprovedCountries": []
108
+ }
109
+ ],
110
+ "itemLevelIssues": [
111
+ {
112
+ "code": "missing_recommended_attribute",
113
+ "servability": "unaffected",
114
+ "description": "Missing product highlight",
115
+ "detail": "Add product highlights for better visibility",
116
+ "attributeName": "product_highlight"
117
+ }
118
+ ]
119
+ }
120
+ ```
121
+
122
+ ## Accounts
123
+
124
+ | Method | Endpoint |
125
+ |--------|----------|
126
+ | `GET` | `/{merchantId}/accounts/{accountId}` |
127
+ | `GET` | `/{merchantId}/accounts` |
128
+ | `POST` | `/{merchantId}/accounts` |
129
+ | `PATCH` | `/{merchantId}/accounts/{accountId}` |
130
+ | `DELETE` | `/{merchantId}/accounts/{accountId}` |
131
+
132
+ ## Datafeeds
133
+
134
+ | Method | Endpoint |
135
+ |--------|----------|
136
+ | `GET` | `/{merchantId}/datafeeds/{datafeedId}` |
137
+ | `GET` | `/{merchantId}/datafeeds` |
138
+ | `POST` | `/{merchantId}/datafeeds` |
139
+ | `PATCH` | `/{merchantId}/datafeeds/{datafeedId}` |
140
+ | `DELETE` | `/{merchantId}/datafeeds/{datafeedId}` |
141
+ | `POST` | `/{merchantId}/datafeeds/{datafeedId}/fetchNow` |
142
+
143
+ ```json
144
+ {
145
+ "id": "123456789",
146
+ "name": "Daily Product Feed",
147
+ "contentType": "products",
148
+ "fileName": "products.xml",
149
+ "fetchSchedule": {
150
+ "fetchUrl": "https://example.com/feeds/products.xml",
151
+ "hour": 6,
152
+ "timeZone": "America/New_York",
153
+ "dayOfMonth": 0,
154
+ "weekday": "monday",
155
+ "paused": false
156
+ },
157
+ "format": {
158
+ "fileEncoding": "utf-8",
159
+ "quotingMode": "none"
160
+ },
161
+ "targets": [
162
+ {
163
+ "language": "en",
164
+ "country": "US",
165
+ "includedDestinations": ["SurfacesAcrossGoogle", "ShoppingAds"]
166
+ }
167
+ ]
168
+ }
169
+ ```
170
+
171
+ ## Price Object (Content API)
172
+
173
+ ```json
174
+ {
175
+ "value": "79.99",
176
+ "currency": "USD"
177
+ }
178
+ ```
179
+
180
+ `value` is a decimal string. `currency` is ISO 4217.
181
+
182
+ ## Key Enums
183
+
184
+ **availability:** `in stock`, `out of stock`, `preorder`, `backorder`
185
+ (Note: spaces, not underscores — unlike Merchant API)
186
+
187
+ **condition:** `new`, `refurbished`, `used`
188
+
189
+ **channel:** `online`, `local`
190
+ (Note: lowercase strings — unlike Merchant API enums)
191
+
192
+ ## Pagination
193
+
194
+ List endpoints support `maxResults` and `pageToken`:
195
+
196
+ ```
197
+ GET /{merchantId}/products?maxResults=250&pageToken=abc123
198
+ ```
199
+
200
+ ## Error Format
201
+
202
+ ```json
203
+ {
204
+ "error": {
205
+ "errors": [
206
+ {
207
+ "domain": "content.ContentErrorDomain",
208
+ "reason": "not_found",
209
+ "message": "product not found"
210
+ }
211
+ ],
212
+ "code": 404,
213
+ "message": "product not found"
214
+ }
215
+ }
216
+ ```
@@ -0,0 +1,233 @@
1
+ # Data Sources Sub-API Reference
2
+
3
+ Base: `https://merchantapi.googleapis.com/datasources/v1`
4
+
5
+ Manage how product data flows into Merchant Center — via API, file uploads, or automatic crawling.
6
+
7
+ ## Endpoints
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `POST` | `/accounts/{account}/dataSources` | Create data source |
12
+ | `GET` | `/accounts/{account}/dataSources/{dataSource}` | Get data source |
13
+ | `GET` | `/accounts/{account}/dataSources` | List data sources |
14
+ | `PATCH` | `/accounts/{account}/dataSources/{dataSource}` | Update data source |
15
+ | `DELETE` | `/accounts/{account}/dataSources/{dataSource}` | Delete data source |
16
+ | `POST` | `/accounts/{account}/dataSources/{dataSource}:fetch` | Trigger file fetch |
17
+ | `GET` | `/accounts/{account}/dataSources/{dataSource}/fileUploads/{fileUpload}` | Get file upload status |
18
+
19
+ ## Data Source Types
20
+
21
+ ### Primary API Data Source
22
+
23
+ Products inserted directly via `productInputs:insert`.
24
+
25
+ ```json
26
+ {
27
+ "displayName": "My API Feed",
28
+ "primaryProductDataSource": {
29
+ "channel": "ONLINE_PRODUCTS",
30
+ "contentLanguage": "en",
31
+ "feedLabel": "US"
32
+ }
33
+ }
34
+ ```
35
+
36
+ ### Primary File Data Source
37
+
38
+ Products loaded from a file (URL fetch or direct upload).
39
+
40
+ ```json
41
+ {
42
+ "displayName": "Daily Product Feed",
43
+ "primaryProductDataSource": {
44
+ "channel": "ONLINE_PRODUCTS",
45
+ "contentLanguage": "en",
46
+ "feedLabel": "US"
47
+ },
48
+ "fileInput": {
49
+ "fetchSettings": {
50
+ "enabled": true,
51
+ "fetchUri": "https://example.com/feeds/products.xml",
52
+ "timeOfDay": { "hours": 6, "minutes": 0 },
53
+ "dayOfMonth": 0,
54
+ "timeZone": "America/New_York",
55
+ "frequency": "DAILY"
56
+ },
57
+ "fileName": "products.xml",
58
+ "fileInputType": "FETCH"
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Supplemental API Data Source
64
+
65
+ Adds/overrides attributes on products from a primary source.
66
+
67
+ ```json
68
+ {
69
+ "displayName": "Price Overrides",
70
+ "supplementalProductDataSource": {
71
+ "referencingPrimaryDataSources": [
72
+ "accounts/123456/dataSources/primary-feed-id"
73
+ ]
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### Supplemental File Data Source
79
+
80
+ ```json
81
+ {
82
+ "displayName": "Weekly Sale Prices",
83
+ "supplementalProductDataSource": {
84
+ "referencingPrimaryDataSources": [
85
+ "accounts/123456/dataSources/primary-feed-id"
86
+ ]
87
+ },
88
+ "fileInput": {
89
+ "fetchSettings": {
90
+ "enabled": true,
91
+ "fetchUri": "https://example.com/feeds/sale-prices.tsv",
92
+ "frequency": "WEEKLY",
93
+ "dayOfWeek": "MONDAY",
94
+ "timeOfDay": { "hours": 3, "minutes": 0 },
95
+ "timeZone": "America/New_York"
96
+ },
97
+ "fileName": "sale-prices.tsv",
98
+ "fileInputType": "FETCH"
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Channel Types
104
+
105
+ | Channel | Description |
106
+ |---------|-------------|
107
+ | `ONLINE_PRODUCTS` | Online product listings |
108
+ | `LOCAL_PRODUCTS` | Local/in-store product listings |
109
+ | `PRODUCTS` | Both online and local |
110
+
111
+ ## Fetch Frequency
112
+
113
+ | Value | Description |
114
+ |-------|-------------|
115
+ | `DAILY` | Every day at specified time |
116
+ | `WEEKLY` | Specified day + time each week |
117
+ | `MONTHLY` | Specified day of month + time |
118
+
119
+ ## File Input Types
120
+
121
+ | Type | Description |
122
+ |------|-------------|
123
+ | `FETCH` | Google fetches from your URL on schedule |
124
+ | `GOOGLE_SHEETS` | Data from a Google Sheet |
125
+ | `UPLOAD` | Direct file upload via SFTP or Merchant Center UI |
126
+
127
+ ## Key Fields
128
+
129
+ | Field | Type | Description |
130
+ |-------|------|-------------|
131
+ | `name` | string | Resource name (output only) |
132
+ | `dataSourceId` | string | Numeric ID (output only) |
133
+ | `displayName` | string | Human-readable name |
134
+ | `primaryProductDataSource` | object | Config for primary data source |
135
+ | `supplementalProductDataSource` | object | Config for supplemental source |
136
+ | `fileInput` | object | File-based fetch/upload settings |
137
+ | `input` | enum | `API`, `FILE`, `UI`, `AUTOFEED` (output only) |
138
+
139
+ ## Common Workflows
140
+
141
+ ### Create Primary API Feed and Insert Products
142
+
143
+ ```javascript
144
+ // Step 1: Create the data source
145
+ const dsResponse = await fetch(
146
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources`,
147
+ {
148
+ method: 'POST',
149
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
150
+ body: JSON.stringify({
151
+ displayName: 'Product API Feed',
152
+ primaryProductDataSource: {
153
+ channel: 'ONLINE_PRODUCTS',
154
+ contentLanguage: 'en',
155
+ feedLabel: 'US',
156
+ },
157
+ }),
158
+ }
159
+ );
160
+ const dataSource = await dsResponse.json();
161
+ const dataSourceName = dataSource.name; // accounts/123456/dataSources/789
162
+
163
+ // Step 2: Insert products referencing this data source
164
+ await fetch(
165
+ `https://merchantapi.googleapis.com/products/v1/accounts/${MERCHANT_ID}/productInputs:insert?dataSource=${dataSourceName}`,
166
+ {
167
+ method: 'POST',
168
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
169
+ body: JSON.stringify({
170
+ offerId: 'SKU-001',
171
+ contentLanguage: 'en',
172
+ feedLabel: 'US',
173
+ productAttributes: {
174
+ title: 'My Product',
175
+ // ... other attributes
176
+ },
177
+ }),
178
+ }
179
+ );
180
+ ```
181
+
182
+ ### Create Supplemental Feed for Sale Prices
183
+
184
+ ```javascript
185
+ // Supplemental feed overrides specific attributes
186
+ const dsResponse = await fetch(
187
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources`,
188
+ {
189
+ method: 'POST',
190
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
191
+ body: JSON.stringify({
192
+ displayName: 'Sale Price Overrides',
193
+ supplementalProductDataSource: {
194
+ referencingPrimaryDataSources: [primaryDataSourceName],
195
+ },
196
+ }),
197
+ }
198
+ );
199
+ const supplementalDS = await dsResponse.json();
200
+
201
+ // Insert supplemental data (only the fields you want to override)
202
+ await fetch(
203
+ `https://merchantapi.googleapis.com/products/v1/accounts/${MERCHANT_ID}/productInputs:insert?dataSource=${supplementalDS.name}`,
204
+ {
205
+ method: 'POST',
206
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
207
+ body: JSON.stringify({
208
+ offerId: 'SKU-001',
209
+ contentLanguage: 'en',
210
+ feedLabel: 'US',
211
+ productAttributes: {
212
+ salePrice: { amountMicros: '59990000', currencyCode: 'USD' },
213
+ salePriceEffectiveDate: {
214
+ startTime: '2024-12-01T00:00:00Z',
215
+ endTime: '2024-12-31T23:59:59Z',
216
+ },
217
+ },
218
+ }),
219
+ }
220
+ );
221
+ ```
222
+
223
+ ### Trigger Manual File Fetch
224
+
225
+ ```javascript
226
+ await fetch(
227
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources/${DATA_SOURCE_ID}:fetch`,
228
+ {
229
+ method: 'POST',
230
+ headers: { 'Authorization': `Bearer ${token}` },
231
+ }
232
+ );
233
+ ```