Agent skill

Command UI

by forcedotcom in forcedotcom/salesforcedx-vscode

Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService.

BSD-3-ClauseAuto-check passedFrontend & Design

Install Command UI

skills CLI
$ npx skills add forcedotcom/salesforcedx-vscode --skill command-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install forcedotcom/salesforcedx-vscode command-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/command-ui .claude/skills/command-ui && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
command-ui
GitHub stars
1k
Token cost
~1.4k tokens
SKILL.md length
353 words
Files
2 (incl. references)
Skills in repo
37
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService.

  • Works in 5 steps: Manifest + i18n → Register → Extra surfaces → …
  • Adding a command
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Editing package.nls command titles

What it does

Command UI is an agent skill from forcedotcom/salesforcedx-vscode. Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService. Use when adding a command, editing package.nls command titles, wiring success/progress, or calling vscode.commands.registerCommand / vscode.window.withProgress / showInformationMessage for command UX.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/notification-mode-api.md`).

It sits in Frontend & Design, covering Internationalization. It works with Visual Studio Code, Salesforce and npm. The repository describes itself as: Salesforce Extensions for VS Code. The licence is BSD-3-Clause.

When your agent uses it

  • Adding a command
  • Editing package.nls command titles
  • Wiring success/progress
  • Calling vscode.commands.registerCommand / vscode.window.withProgress / showInformationMessage for command UX

Example prompts

  • “/command-ui”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Manifest + i18n
  2. Register
  3. Extra surfaces
  4. Layer + slot
  5. Progress + success

What it can do on your machine

Read from SKILL.md and the folder at commit f7bb6fe. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Command UI loads about 1.4k tokens when it runs, and up to ~2k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 353 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~76
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from forcedotcom/salesforcedx-vscode at commit f7bb6fe, republished under its BSD-3-Clause licence (© forcedotcom). 353 words, ~1,358 tokens.

Download SKILL.mdSave it as .claude/skills/command-ui/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
command-ui
description
Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService. Use when adding a command, editing package.nls command titles, wiring success/progress, or calling vscode.commands.registerCommand / vscode.window.withProgress / showInformationMessage for command UX.
review
always

Command UI

One Effect handler. Palette plus any extra surface (context menu, CodeLens, tree item, title). Success/progress through NotificationModeService.

Recipe

1. Manifest + i18n

Two catalogs. Same key, different files.

Manifest (VS Code)Runtime (nls.localize)
Filespackage.json %key%, package.nls.jsonsrc/messages/i18n.ts
Localepackage.nls.ja.json (Partial; missing keys → English)i18n.ja.ts (Partial)
Ownscommand titles, config descriptions, view titlesprogress / success / errors / buttons
  • contributes.commands: "command": "sf.my.command", "title": "%deploy_this_source_text%" — %key% only (package-json-i18n-descriptions)
  • package.nls.json: "deploy_this_source_text": "SFDX: Deploy This Source to Org" — Title Case, SFDX: prefix (i18n-messages)
  • Same English string in i18n.ts under the same key
  • Menu when for each surface (commandPalette, editor/context, explorer/context)
  • commandLevelNotifications property key = that English title
  • Runtime copy only in i18n.ts (vscode-window-messages)

COMMAND is messages.deploy_this_source_text (always English). nls.localize('deploy_this_source_text') is user-visible (locale-aware).

package.nls.ja.json / i18n.ja.ts are Partial — add a translation when you have one; English is the fallback.

Done: %key% in package.json + package.nls.json + i18n.ts; slot key equals messages.<title_key>; command in palette.

2. Register

Once: api.services.registerCommandWithRuntime(getRuntime()).

Palette when gates enablement (sf:project_opened, sf:has_target_org). when: never for internals (conflict helpers, status-bar click-to-toast).

Two command IDs only when VS Code arg shapes differ. Share one English title → one notification slot. Both stay in the palette.

Done: registerCommandWithRuntime for every contributed command ID.

Show full SKILL.md (151 more words)Show less
3. Extra surfaces

Same command ID. Handler accepts optional args from the surface; palette path falls back (active editor / prompt).

typescript
export const myCommand = Effect.fn('myCommand')(function* (sourceUri?: URI, uris: URI[] = []) {
  const targets = sourceUri
    ? new Set([sourceUri, ...uris])
    : new Set([yield* api.services.EditorService.getActiveEditorUri()]);
});

new CodeLens(range, { command: 'sf.my.command', title, arguments: [uri] });

Done: every CodeLens / menu / TreeItem.command uses that ID.

4. Layer + slot

Merge NotificationModeService.Default(extensionSection, statusBarId, statusBarName) into AllServicesLayer. Copy an existing Default(...) in that package's extensionProvider.ts. Dispose the ManagedRuntime on deactivation.

Lookup: command → extensionLevelNotifications → global salesforcedx-vscode-services.notifications.

Add commandLevelNotifications property (English title key from step 1). Copy enum + enumDescriptions from a sibling slot; pick PAS / SO / PO — notification-mode-api.md. Slot description is a %key% in package.nls.json. Add extensionLevelNotifications if missing. Slot, not a boolean showSuccessNotification.

Type keys from package.json in src/utils/notificationMode.ts:

typescript
import type pkg from '../../package.json';

type CommandNotificationKey =
  keyof (typeof pkg)['contributes']['configuration']['properties']['salesforcedx-vscode-metadata.commandLevelNotifications']['properties'];

export type ProgressOnlyCommandKey = 'SFDX: Diff Source Against Org';
export type ProgressAndSuccessCommandKey = Exclude<CommandNotificationKey, ProgressOnlyCommandKey>;

ESLint notificationSlotMatchesPackageJson checks SuccessOnly / ProgressOnly aliases against the slot enum.

Done: Default(...) in the layer; slot exists; COMMAND typed.

5. Progress + success
typescript
const COMMAND: ProgressAndSuccessCommandKey = messages.deploy_this_source_text;
const notificationMode = yield* api.services.NotificationModeService;
const location = yield* notificationMode.getProgressLocation(COMMAND);

yield* work.pipe(
  promptService.withProgress(nls.localize('working'), location),
  Effect.tap(() =>
    notificationMode.showSuccessNotification(
      COMMAND,
      nls.localize('command_succeeded_text', nls.localize('deploy_this_source_text'))
    )
  )
);

Cancellable: promptService.withCancellableProgress(title, location).

forceShow: true when the message must not be suppressed (request ID).

Helpers that wrap vscode.window.withProgress (e.g. metadata withPreparationProgress) take the command key and call getProgressLocation.

Done: getProgressLocation + showSuccessNotification.

© forcedotcom, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/command-ui of forcedotcom/salesforcedx-vscode.

  • SKILL.md
  • references/notification-mode-api.md

Open the folder on GitHubat commit f7bb6fe

Compare with similar skills

Command UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Command UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Command UI this skillforcedotcom/salesforcedx-vscode1k—~1.4kAutomated safety check: PassBSD-3-Clause
Create Docsvictorgarciaesgi/nuxt-typed-router4132 repos~2.8kAutomated safety check: PassMIT
Frontend Build Timing Auditopenops-cloud/openops1.1k—~2.3kAutomated safety check: PassCustom licence
Igniteui Angular BuildIgniteUI/igniteui-angular599—~898Automated safety check: PassCustom licence
Createliriliri/licia2.4k—~879Automated safety check: PassMIT
Managing MCP IndexComfy-Org/workflow_templates1.3k—~1.9kAutomated safety check: NotesMIT

Similar skills

  • Create Docs

    victorgarciaesgi/nuxt-typed-router

    Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.

    413 GitHub starsUsed in 2 repos~2.8k tokens
    Frontend & DesignAuto-check passed
  • Frontend Build Timing Audit

    openops-cloud/openops

    Detects and diagnoses chunk-evaluation timing bugs in the Vite/rolldown production build of react-ui (works-in-dev / broken-in-build i18n regressions, missing UI labels, module-scope t()…

    1.1k GitHub stars~2.3k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Igniteui Angular Build

    IgniteUI/igniteui-angular

    Quick-reference for building the core Ignite UI for Angular library and related packages.

    599 GitHub stars~898 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Create

    liriliri/licia

    Create a new Licia utility module following project conventions.

    2.4k GitHub stars~879 tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Managing MCP Index

    Comfy-Org/workflow_templates

    Builds and maintains templates/index.mcp.json for Comfy Cloud MCP tools.

    1.3k GitHub stars~1.9k tokensUpdated today
    Frontend & DesignAuto-check: notes
  • Desktop i18n for Cursor BYOK

    leookun/cursor-byok

    Rules for localizing the Cursor BYOK desktop app: the global t() function, complete locale catalogs, system-language selection and the scan-and-check commands.

    3.2k GitHub stars~508 tokensUpdated 9 days ago
    Frontend & DesignAuto-check passed

More from forcedotcom/salesforcedx-vscode

All 37 skills in this repo
  • Services Extension Consumption

    forcedotcom/salesforcedx-vscode

    Consume the salesforcedx-vscode-services extension API. An agent skill from forcedotcom/salesforcedx-vscode.

    1k GitHub stars~5k tokensUpdated today
    Auto-check passed
  • Changelog

    forcedotcom/salesforcedx-vscode

    Polish the automated CHANGELOG on develop before the next stable build.

    1k GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Core Extension API

    forcedotcom/salesforcedx-vscode

    Public API exported by salesforcedx-vscode-core activate(). An agent skill from forcedotcom/salesforcedx-vscode.

    1k GitHub stars~842 tokensUpdated today
    Auto-check passed
  • Drivable Vscode

    forcedotcom/salesforcedx-vscode

    Operate a real VS Code instance through drivable-vscode. An agent skill from forcedotcom/salesforcedx-vscode.

    1k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Effect Best Practices

    forcedotcom/salesforcedx-vscode

    Enforces Effect-TS patterns for services, errors, layers, atoms, and Effect.pipe composition.

    1k GitHub stars~6.2k tokensUpdated today
    Auto-check passed
  • External Consumers

    forcedotcom/salesforcedx-vscode

    Known external consumers of APIs from this monorepo's extensions.

    1k GitHub stars~1.8k tokensUpdated today
    Auto-check passed

Questions about Command UI

What does Command UI do?

Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService. Command UI is an agent skill from forcedotcom/salesforcedx-vscode.nls titles, and NotificationModeService.

When should I use Command UI?

Command UI fits situations like: adding a command; editing package.nls command titles; wiring success/progress; calling vscode.commands.registerCommand / vscode.window.withProgress / showInformationMessage for command UX.

How do I install Command UI in Claude Code?

Run `npx skills add forcedotcom/salesforcedx-vscode --skill command-ui -a claude-code`. Or copy the skill folder (.claude/skills/command-ui in forcedotcom/salesforcedx-vscode) into .claude/skills/command-ui in your project. Claude Code loads it when a task matches its description.

How do I install Command UI in Codex?

Run `npx skills add forcedotcom/salesforcedx-vscode --skill command-ui -a codex`. Or copy the skill folder (.claude/skills/command-ui in forcedotcom/salesforcedx-vscode) into .agents/skills/command-ui in your project. Codex loads it when a task matches its description.

Can I use Command UI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add forcedotcom/salesforcedx-vscode --skill command-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/command-ui, .gemini/skills/command-ui, .github/skills/command-ui and .opencode/skills/command-ui in your project.

What does Command UI need to run?

SKILL.md names no scripts, command-line tools or credentials: Command UI is instructions for the agent only.

Does Command UI access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Command UI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Command UI use?

Command UI is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Command UI use?

About 1.4k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 652 tokens, read only when the agent opens those files.

What are the alternatives to Command UI?

Skills that share tags, products or a category with Command UI: Create Docs (victorgarciaesgi/nuxt-typed-router, 413 stars), Frontend Build Timing Audit (openops-cloud/openops, 1.1k stars), Igniteui Angular Build (IgniteUI/igniteui-angular, 599 stars) and Create (liriliri/licia, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Command UI?

forcedotcom (a GitHub organization) maintains it in forcedotcom/salesforcedx-vscode, which has 1,035 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 7, 2026.

Source: forcedotcom/salesforcedx-vscode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.