agentleFS
forcedotcomforcedotcom/salesforcedx-vscode/.claude/skills/external-consumers/SKILL.md

external-consumers

Skill1k starsChanged 26 days agoBSD-3-ClauseView on GitHub

Known external consumers of APIs from this monorepo's extensions. Use when changing public API surfaces (activate return types, exported types, services sub-objects), evaluating breaking changes, removing exports, or checking if anything uses a given API member.

Adopted by

Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data

Week of Sep 13: 0 new projectsWeek of Sep 20: 0 new projectsWeek of Sep 27: 0 new projectsWeek of Oct 4: 0 new projectsWeek of Oct 11: 0 new projectsWeek of Oct 18: 0 new projectsWeek of Oct 25: 0 new projectsWeek of Nov 1: 0 new projects
Sep 2026Oct 2026Nov 2026
New projects taking a version of this file each week, over the 8 weeks our latest run read: only 0 in all, so this is a hint, not a trend.

Who's talking about forcedotcom/salesforcedx-vscode

The biggest 5 of 52 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 52

Talked about on GitHub and Stack Overflow (52 times).

On GitHub · 50

45 more on GitHub

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Remove/change field, method, behavior = breaking

    line 12
  2. Very specific:

    No current in-repo .exports consumers of SalesforceVSCodeCoreApi.

    line 100
  3. Very specific:

    Search org:forcedotcom and org:salesforcecli via gh api

    line 106
  4. Distinctive:

    Read private repos via contents API

    line 107
  5. Very specific:

    Check extensionPack in salesforcedx-vscode and salesforcedx-vscode-expanded for new extensions

    line 109

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

External Consumers

Other repos consume APIs from this monorepo's extensions. Some are private.

  • Exported extension APIs = public contracts
  • Remove/change field, method, behavior = breaking
  • Add field = non-breaking
  • Cannot grep this monorepo alone — must check external repos
  • Consumers version-gate (semver.satisfies) — major bump alone insufficient

On-demand validation via gh CLI

# search specific repo
gh api -X GET "search/code?q=SYMBOL+repo:forcedotcom/REPO&per_page=20" \
  --jq '.items[] | "\(.path)"'

# read file from private repo
gh api repos/forcedotcom/REPO/contents/PATH --jq '.content' | base64 -d

# search all forcedotcom repos
gh api -X GET "search/code?q=SYMBOL+org:forcedotcom&per_page=30" \
  --jq '.items[] | "\(.repository.name): \(.path)"'

# search salesforcecli org too
gh api -X GET "search/code?q=SYMBOL+org:salesforcecli&per_page=30" \
  --jq '.items[] | "\(.repository.name): \(.path)"'

Rate limit ~30 req/min on search API. Use contents API for targeted reads.

⚠️ Code search only indexes the DEFAULT branch

search/code never sees non-default branches (GitHub docs). A repo whose shipping extension lives on a release branch (see einstein-gpt below) returns zero hits even when it heavily consumes core. Zero search hits ≠ no consumer. Confirm a repo's shipping branch (check .github/workflows/*release*.yml for the ref: it checks out), then walk that branch's tree + read files directly:

# find the ref the release workflow builds from
gh api repos/forcedotcom/REPO/contents/.github/workflows --jq '.[].name'
gh api "repos/forcedotcom/REPO/contents/.github/workflows/RELEASE.yml" --jq '.content' | base64 -d | grep -n 'ref:'

# list a non-default branch's files, then read the ones you care about
gh api "repos/forcedotcom/REPO/git/trees/BRANCH?recursive=1" --jq '.tree[].path'
gh api "repos/forcedotcom/REPO/contents/PATH?ref=BRANCH" --jq '.content' | base64 -d

Direct core API consumers (SalesforceVSCodeCoreApi)

Via vscode.extensions.getExtension('salesforce.salesforcedx-vscode-core').exports:

RepoVisibilityConsumed
vscode-agentsPublicservices.{ChannelService,TelemetryService,WorkspaceContext}
metadata-visualizerPrivateservices.TelemetryService
code-analyzerPublicservices.WorkspaceContext (direct), telemetry via service-provider
einstein-gpt (Agentforce Vibes Autocomplete — see note)Privateservices.{ChannelService,WorkspaceContext,CommandEventDispatcher}, workspaceContextUtils.getOrgShape; reads optional SalesforceProjectConfig but has no production caller

einstein-gpt ships from a non-default branch. The published extension salesforce.agentforce-vibes-autocomplete is built from afv-v3.0-iac, not main; main:.github/workflows/iac-release.yml checks out that branch. It hard-depends on core and throws at activation when CommandEventDispatcher is absent. SalesforceProjectConfig differs: CoreExtensionService reads and stores it, accepts its absence, and only its unit test calls getSalesforceProjectConfig(). It is not a behavioral contract. Do not restore services.SalesforceProjectConfig to core based on this reference. Code search skips non-default branches; inspect afv-v3.0-iac directly.

Direct services API consumers (SalesforceVSCodeServicesApi)

Via vscode.extensions.getExtension('salesforce.salesforcedx-vscode-services'):

RepoVisibilityConsumed
einstein-gptPrivateservices.ConnectionService.getConnection, services.TargetOrgRef, services.prebuiltServicesDependencies

einstein-gpt directly consumes the services extension API (separate from its core dependency and its @salesforce/vscode-service-provider telemetry use). packages/extension/src/services/auth/org-service.ts (on the actively-shipping main branch, which now builds afv-v4 via release.yml) resolves salesforce.salesforcedx-vscode-services, duplicates a local SalesforceVSCodeServicesApi type, and calls api.services.ConnectionService.getConnection(), api.services.TargetOrgRef(), and reads api.services.prebuiltServicesDependencies. Check changes to ConnectionService.getConnection, TargetOrgRef, or prebuiltServicesDependencies against this consumer — breaking any of them is a breaking change even though code search on main may not surface the duplicated type.

@salesforce/vscode-service-provider consumers

Repo (public) — abstraction bridging to core services. Still depends on core being active.

RepoService
code-analyzerServiceType.Telemetry
einstein-gptServiceType.Telemetry

extensionDependency-only (no API consumption)

RepoVisibilityNotes
ui-previewPrivateCore extensionDependency only. Vendors a diverged packages/salesforcedx-utils-vscode workspace copy — not this repo's published package. App imports from that fork: notificationService, WorkspaceContextUtil, OrgUserInfo, TelemetryService, ChannelService, ConfigUtil.{getTargetOrgOrAlias,getUsernameFor,getAllAliasesFor}. Fork still has APIs this repo dropped. Deleting them here does not break shipping ui-preview.

No current core dependency

RepoNotes
sldsNo extensionDep, no getExtension. In same extension pack.
apex-language-supportExperimental. String refs only in tests/comments.
apex-oas (in-repo)extensionDependency = salesforcedx-vscode-apex + salesforcedx-vscode-services; no core dep. Reads project/registry/fs via services-extension api.services.*. Only cross-extension .exports use is apex's .languageClientManager.

In-repo consumers

No current in-repo .exports consumers of SalesforceVSCodeCoreApi.

Keeping current

Verified 2026-09-29. Before asserting "nobody uses X":

  1. Grep monorepo for \.exports\.MEMBER
  2. Search org:forcedotcom and org:salesforcecli via gh api
  3. Read private repos via contents API
  4. For repos that ship from a non-default branch (e.g. einstein-gpt → afv-v3.0-iac), inspect that branch directly — code search misses it (see the ⚠️ above)
  5. Check extensionPack in salesforcedx-vscode and salesforcedx-vscode-expanded for new extensions

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.