external-consumers

Tracks external repositories consuming Salesforce VS Code extension APIs to assess breaking changes.

1.0k|454|Updated Jun 21, 2017
One-click install
npx skills add https://github.com/forcedotcom/salesforcedx-vscode --skill external-consumers
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: external-consumers
Source: https://github.com/forcedotcom/salesforcedx-vscode/tree/main/.claude/skills/external-consumers
Command: npx skills add https://github.com/forcedotcom/salesforcedx-vscode --skill external-consumers

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Changing a public API in the salesforcedx-vscode monorepo can silently break external extensions that consume it, and grepping the monorepo alone cannot reveal those consumers. This Skill documents every known external consumer of the core and services extension APIs and provides GitHub CLI commands to verify usage before making breaking changes.

Core Features & Use Cases

  • Consumer Registry: Maintains tables of public and private repositories consuming SalesforceVSCodeCoreApi and SalesforceVSCodeServicesApi, including which specific services and members each uses.
  • On-Demand Validation: Provides gh api commands to search code across the forcedotcom and salesforcecli orgs, read files from private repos, and inspect non-default release branches that code search misses.
  • Breaking Change Assessment: Use it when removing exports, changing activate return types, or modifying services sub-objects to determine whether the change is breaking and which consumers are affected.
  • Use Case: Before removing services.WorkspaceContext from the core extension API, consult this Skill to find that vscode-agents, code-analyzer, and einstein-gpt all consume it, then verify current usage via GitHub code search.

Quick Start

Ask the AI to check whether any external consumers use a specific exported API member before you remove or change it.

Frequently Asked Questions about external-consumers

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I check if removing an exported API breaks external extensions?

Consult the consumer tables listing which repos use each API member, then verify with gh api code search across org:forcedotcom and org:salesforcecli. For private repos, read files directly via the contents API.

How to search GitHub code across an organization using gh CLI?

Run gh api -X GET "search/code?q=SYMBOL+org:forcedotcom" with a jq filter to list matching files. The search API is rate-limited to roughly 30 requests per minute, so use the contents API for targeted file reads.

Why does GitHub code search show zero hits for a known API consumer?

GitHub code search only indexes the default branch. Repos shipping from a non-default branch, like einstein-gpt building from afv-v3.0-iac, return zero hits even when they heavily consume the API. Inspect that branch's tree directly via the git/trees API.

Which extensions consume the salesforcedx-vscode-core API?

vscode-agents, metadata-visualizer, code-analyzer, and einstein-gpt consume the core API via vscode.extensions.getExtension exports, using services like ChannelService, TelemetryService, WorkspaceContext, and CommandEventDispatcher.

Is adding a new field to an extension API a breaking change?

Adding a field is non-breaking, but removing or changing a field, method, or behavior is breaking because exported extension APIs are public contracts. Consumers version-gate with semver.satisfies, so a major version bump alone is insufficient protection.