platform-agentexchange-partner-offers-configure
GitHub配置 Salesforce 组织是否接收 Transactable Marketplace 合作伙伴报价。通过 Metadata API 修改 Org Preference,支持查询当前状态、写入设置文件、部署变更及验证结果,适用于开启或关闭该功能场景。
Trigger Scenarios
Install
npx skills add forcedotcom/sf-skills --skill platform-agentexchange-partner-offers-configure -g -y
SKILL.md
Frontmatter
{
"name": "platform-agentexchange-partner-offers-configure",
"metadata": {
"version": "1.0",
"minApiVersion": "67.0"
},
"description": "Enable or disable the org preference that controls whether a Salesforce org can receive partner offers from the Transactable Marketplace. Use this skill when the user wants to turn partner offer reception on or off for an org. TRIGGER when: user asks to enable or disable partner offers, configure TransactableMarketplaceReceivePartnerOffers, configure enableTransactableMarketplaceReceivePartnerOffers, set up marketplace partner offer reception, toggle the TM partner offers setting, edit a TransactableMarketplacePrivateOffer.settings file, or configure org preferences related to transactable marketplace. DO NOT TRIGGER when: user needs to create or manage the partner offer records themselves, configure marketplace listing settings, or work with SfdcPartnerOffer objects (use platform-metadata-deploy or platform-apex-generate instead)."
}
Enabling Transactable Marketplace Receive Partner Offers Org Preference
This skill configures the enableTransactableMarketplaceReceivePartnerOffers org preference via the TransactableMarketplacePrivateOfferSettings Metadata API type, which controls whether a Salesforce org is eligible to receive partner offers through the Transactable Marketplace. It is required for subscriber orgs that participate in the TM partner offer flow.
Scope
- In scope: Reading the current value of the pref, enabling or disabling it via Metadata API (
TransactableMarketplacePrivateOfferSettings), and verifying the change took effect. - Out of scope: Creating or managing partner offer records, configuring marketplace listings, or any Apex/trigger changes related to offer processing.
Required Inputs
- Target org alias or username: The org where the pref should be set. Ask if not provided.
- Desired state:
true(enable) orfalse(disable). Default:true.
Workflow
Phase 1 — Check current state
-
Query the current preference value by running:
sf data query -q "SELECT Preference, Value FROM OrgPreference WHERE Preference = 'TransactableMarketplaceReceivePartnerOffers'" --target-org <alias> --use-tooling-apiIf the record exists and
Value = true, the pref is already enabled — confirm with the user before proceeding. If the query returns no rows, the pref is not yet set (defaults tofalse). -
Resolve the org's package directory to determine where to write metadata. Run this and use its output as
<packageDir>:jq -r '.packageDirectories[0].path // "force-app/main/default"' sfdx-project.json
Phase 2 — Apply the preference
-
Write the TransactableMarketplacePrivateOfferSettings metadata file — load
assets/org-pref-template.mdfor the exact XML structure, then write the file at:<packageDir>/settings/TransactableMarketplacePrivateOffer.settingsSet
<enableTransactableMarketplaceReceivePartnerOffers>true</enableTransactableMarketplaceReceivePartnerOffers>(orfalseif disabling). -
Deploy the metadata to the target org. Before running the deploy, confirm with the user:
- Confirmed the target org alias with the user (deploying to the wrong org is not easily reversible)
- Confirmed the desired state (
true/false) matches the user's intent
sf project deploy start --metadata TransactableMarketplacePrivateOfferSettings --target-org <alias>
Phase 3 — Verify
-
Confirm the change by re-running the Tooling API query from step 1 and verifying the
Valuecolumn matches the desired state. -
Report to the user — see Output Expectations below.
Rules / Constraints
| Rule | Rationale |
|---|---|
| Always query the current value before writing metadata | Avoids unnecessary deploys and detects conflicting changes |
Use TransactableMarketplacePrivateOfferSettings as the metadata type |
This is the concrete type registered in the platform for this pref, not the generic OrgPreferenceSettings |
The settings file must be named TransactableMarketplacePrivateOffer.settings |
Metadata API requires the filename to match the settings node name |
Do not hardcode force-app/main/default/ |
Always read sfdx-project.json for the actual package directory |
| Never deploy without confirming the org alias with the user | Deploying to the wrong org is not easily reversible |
Gotchas
| Issue | Resolution |
|---|---|
| Tooling API query returns no rows | Pref is unset (defaults to false). Safe to create a new settings file. |
Deploy fails with INVALID_TYPE |
The metadata type name is TransactableMarketplacePrivateOfferSettings — check the --metadata flag value. |
| Deploy succeeds but value doesn't change | Another settings file in the project may be overriding this one. Search for other TransactableMarketplacePrivateOffer.settings files in the project. |
INSUFFICIENT_ACCESS_OR_READONLY on deploy |
User running the deploy must have the "Modify All Data" or org preference admin permission in the target org. |
| Pref not visible in UI | enableTransactableMarketplaceReceivePartnerOffers is not surfaced in Setup UI — the Tooling API query is the only way to verify it. |
| Available from API version 67.0+ only | The type is available from API v67.0 — deploying against an older API version will fail. |
Output Expectations
After completing all phases, report:
Org: <alias>
Preference: enableTransactableMarketplaceReceivePartnerOffers
Previous value: <true|false|unset>
New value: <true|false>
File written: <packageDir>/settings/TransactableMarketplacePrivateOffer.settings
Deploy status: Success
Reference File Index
| File | When to read |
|---|---|
assets/org-pref-template.md |
Phase 2, step 3 — use as the exact XML structure for the settings file |
examples/org-preference-settings.xml |
To verify the generated file matches expected format |
Version History
- 1.29.0 Current 2026-07-05 18:50


