Interact with the Gus Salesforce org via CLI (sf). An agent skill from forcedotcom/salesforcedx-vscode.

BSD-3-ClauseAuto-check passedSales & Support

Install Gus CLI

skills CLI
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a claude-code

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

GitHub CLI
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --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/gus-cli .claude/skills/gus-cli && 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
gus-cli
GitHub stars
1k
Token cost
~3.3k tokens
SKILL.md length
1,383 words
Files
4
Skills in repo
37
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Interact with the Gus Salesforce org via CLI (sf). An agent skill from forcedotcom/salesforcedx-vscode.

  • Works in 3 steps: Run sf alias list --json; parse result… → If missing: instruct user sf org login… → All commands use -o gus
  • User mentions Gus
  • SKILL.md covers Safety, Prerequisites, Runner identity and Constants, plus 8 more sections
  • Calls sf

What it does

Gus CLI is an agent skill from forcedotcom/salesforcedx-vscode. Interact with the Gus Salesforce org via CLI (sf). Query, create, update work items; query team epics. Use when user mentions Gus, work items, epics, or GUS/Git2Gus workflows.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files (for example `epics.md`, `statuses.md` and `writes.md`).

It sits in Sales & Support, covering User stories and CRM management. It works with Salesforce. The repository describes itself as: Salesforce Extensions for VS Code. The licence is BSD-3-Clause.

When your agent uses it

  • User mentions Gus
  • GUS/Git2Gus workflows

Example prompts

  • “/gus-cli”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Run sf alias list --json; parse result for alias matching gus (case-insensitive)
  2. If missing: instruct user sf org login web -a gus
  3. All commands use -o gus

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

    Shell commands in SKILL.md call:

    • sf

    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

Gus CLI loads about 3.3k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,383 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

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). 1,383 words, ~3,328 tokens.

Download SKILL.mdSave it as .claude/skills/gus-cli/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
gus-cli
description
Interact with the Gus Salesforce org via CLI (sf). Query, create, update work items; query team epics. Use when user mentions Gus, work items, epics, or GUS/Git2Gus workflows.
review
never

Gus CLI

Interact with Gus (Salesforce Agile Accelerator org) via sf CLI. Requires alias gus in sf alias list.

Safety

  • Queries (sf data query, sf alias list): run without asking
  • Writes (create, update): do not execute until user explicitly confirms
    • Present the draft (subject, epic, details, assignee). Ask: "Create this work item?" or "Update work item X?"
    • Draft format: Use bullet list, not markdown table (tables can render blank in some viewers). Put Details__c in a code block so HTML content is visible.
    • Only run sf data create record / sf data update record after user says yes (or equivalent)
    • Answering scope questions (e.g. "just createProject") is not confirmation—still ask
  • Epic selection: when less than 50% sure which epic a work item belongs in, ask the user
  • IDs vs Names: Id (e.g. a07...) is for CLI commands. Name (e.g. W-12345) is for human display and PR titles appended as - W-12345 at the end per pr-draft Title format. NEVER use Id in PR titles or descriptions. Always query Name after creation.

Prerequisites

  1. Run sf alias list --json; parse result for alias matching gus (case-insensitive)
  2. If missing: instruct user sf org login web -a gus
  3. All commands use -o gus

Runner identity

Cache: $HOME/.claude/runner-identity.json — {userId, username, ownerPrefix, slackId, githubLogin}.

  1. sf alias list --json → entry /^gus$/i. Missing → sf org login web -a gus. Value = currentUsername.
  2. Cache hit (file exists, all 5 fields, cached.username === currentUsername) → use it.
  3. Miss → resolve:
    • sf data query --query "SELECT Id FROM User WHERE Username = '<currentUsername>' LIMIT 1" -o gus --result-format json → userId
    • Match currentUsername to ## Team members row → githubLogin, slackId. ownerPrefix = initials lowercase (Shane McLaughlin → sm; one-word → first 2 chars).
    • Not in table → caller's error.
    • mkdir -p $HOME/.claude && write JSON.

Invalidate: alias change auto-detects. Manual: rm $HOME/.claude/runner-identity.json.

Same session: reuse conversation value; don't re-read.

Constants

ConstantValue
Team IDa00B0000000w9xPIAQ
Product Taga1aB000000005G3IAI
User Story RecordTypeId0129000000006gDAAQ

Always use User Story RecordTypeId. Never create Bug records. If user describes a bug/repro, still create it as a User Story.

Objects: ADM_Work__c, ADM_Epic__c (not ADM_Theme__c).

Team members (Assigneec, QA_Engineerc)

Default when unassigned: Platform Dev Tools Scrum Team 005B0000000GIODIA4 – use when work isn't assigned to a person yet.

NameIdGitHub loginSlack ID
Daphne Yang005EE000005d0jdYAAdaphne-sfdcU03CKVATVCY
Jonny Hork005B0000004pYWjIAMjonnyhorkWFGT1L8HF
Kyle Walker005EE0000010oCLYAYkylewalkeU02GCUGEAUU
Madhur Shrivastava005EE00000VZK5FYAXmadhur310U0852LWKWSW
Peter Hale005B0000000GFvWIAWpeternhaleWAR9BDB8T
Shane McLaughlin005B00000024wGBIAYmshanemcWB4TF6RFY

Work items (ADM_Work__c)

Base select: SELECT Id, Name, Subject__c, Status__c, Story_Points__c, Epic__c, RecordType.Name FROM ADM_Work__c

Optional display/detail fields (append to SELECT only for single-WI/triage queries; do NOT add to bulk team/epic queries unless asked—keeps base lean, avoids widening every result set/terminal table):

  • Priority__c — picklist P0-P4.
  • Epic_Name__c — formula/string; epic name w/o Epic__r join. Bulk lists use existing Epic__c id or a separate epic-name lookup (formula evaluated per-row otherwise).
  • Due_Date__c (datetime) + Out_of_SLA__c (boolean) — SLA tracking.
  • Security trio: Security__c (label "Locked by Security", boolean), Security_Vulnerability_Category__c (picklist, 30+ values), Security_Source__c (label "Source", picklist, 30+ values—run sf sobject describe for full lists).

Query patterns (combine as needed; use LIMIT on broad queries):

FilterWHERE clause
MineAssignee__c = '<userId>'
By statusStatus__c = 'In Progress' (or other)
By epicEpic__c = '<epicId>'
UnpointedStory_Points__c = null
Team's openScrum_Team__c = 'a00B0000000w9xPIAQ' AND Status__c IN (<open list>)
Epic + openEpic__c = '<epicId>' AND Status__c IN (<open list>)

Open/unfinished filters use the WHITELIST Status__c IN (<open list>), never NOT IN (<terminal>) — the open list + why a blacklist leaks legacy terminals (incl. the Bug-no-fix set) live in statuses.md. Use LIMIT 50 (or 100) when querying team or epic work.

Body fields (Details__c vs Details_and_Steps_to_Reproduce__c)

The validated User Story body is Details__c. Three rules, one place:

  • ≥20 chars required. Details__c (field label "Description") has a User Story validation rule: <20 chars → create fails with Description must be at least 20 characters to submit a User Story. Despite docs marking it optional, treat as required on create.
  • Don't confuse with Description__c — a DIFFERENT field (label "Comment", unvalidated). The validated body is Details__c.
  • Bug records store the body in Details_and_Steps_to_Reproduce__c (richtextarea), not Details__c. Querying only Details__c misses Bug/PVR content, and a null Details__c on a Bug record ≠ under-specified. Single-WI fetch of unknown/mixed record type → SELECT both, use whichever is populated.

Sequencing prefix: When planning an epic or when the user states a dependency, prefix Subject__c with a sequence number + space (e.g. 1.2 Add config loader). See work-item-sequencing. Optional — skip for independent work.

Create & update → writes.md

sf data create/update record has real traps — -v/--flags-dir incompatibility, space-splitting that truncates multi-word values, HTML-only Details__c, href-stripping, and silent wrong-Id overwrites. The create-then-update recipe, formatting, and verify-Id steps live in writes.md. Read it before any write.

Epics (ADM_Epic__c)

Creating an epic or bulk-creating its work items → epics.md (fields, Scheduled_Build__c, the Details__c ≥20-char + CLI-warning-breaks-JSON gotchas, bulk-create loop).

Query team epics (exclude closed):

sf data query --query "SELECT Id, Name, Description__c FROM ADM_Epic__c WHERE Team__c = 'a00B0000000w9xPIAQ' AND Health__c NOT IN ('Completed', 'Canceled')" -o gus --result-format json

Closed = Health__c in ('Completed', 'Canceled'). Use Description__c when populated to match work to epic.

Description__c is not filterable in SOQL — WHERE/LIKE on it errors field 'Description__c' can not be filtered in a query call. To match an epic by text, fetch all open epics and match on Name, or post-filter Description__c client-side (e.g. with jq). Only SELECT it.

Show full SKILL.md (539 more words)Show less

Epic guide: which work items go where

Use to pick the right Epic__c when creating work. Query epics first; match by Name/Description. Key epics:

IDEx - Mandates and Updates a3QEE0000023Fm92AE

  • Compliance, VSCode extensions major release, library/dependency upgrades (sfdx-core, Apex LS, etc.)
  • Security/compliance work; keeping extensions on latest core features

IDEx - Trust a3QEE0000023FPZ2A2

  • Customer investigations, bugs, trust backlog

effect services improvements a3QEE0000026sJ72AI

  • Shared Effect library; common effect things that aren't runtime services

TDX 262 epics (Code Builder Web, CBLite, Org Browser on Web, LWC on web, Apex Testing Extension, etc.)

  • Web IDE compatibility; running extensions in browser

Backlog epics (IDE Exp - Core, Extensions, LWC & Aura, etc.)

  • Feature-area backlogs; use Name to match

When unsure which epic: ask the user.

[ai-auto] tag

[ai-auto] in Subject__c opts a WI into the auto-build-wi workflow (claim → plan → build → review → draft PR). See workflows/README.md.

  • Add only on explicit user request; only Subject__c (title), never Details__c
  • Skip for WIs needing design/coordination
  • End the subject with the bracketed repository slug, then [ai-auto]: <subject> [owner/repo] [ai-auto]
  • Derive owner/repo from the target repository's git remote; example: Upgrade Tabulator [forcedotcom/salesforcedx-vscode] [ai-auto]
  • Keep any sequencing prefix at the front: 1 Upgrade Tabulator [forcedotcom/salesforcedx-vscode] [ai-auto]
  • Query: Subject__c LIKE '%[ai-auto]%'

Compound workflows

Non-obvious defaults only — assemble the mechanical steps from the sections above.

Create a WI from this PR — Subject from PR title, Details = PR link + concise bullets, RecordTypeId always User Story (0129000000006gDAAQ, even for bug-like issues). Epic default: IDEx - Trust (a3QEE0000023FPZ2A2) for bug-like issues unless context says otherwise. Then create + provide link per writes.md.

What's unfinished in this epic — query Epic__c = '<epicId>' AND Status__c IN (<open list>) (whitelist per statuses.md), LIMIT 100, present as a table. If any Subject__c carries a sequence-number prefix (1, 1.2, …), compute ready/blocked per work-item-sequencing instead of a flat list — "what's ready / unblocked in this epic?" routes there.

Status__c values

Full picklist, flow, and terminal lists → statuses.md.

For create/update use only: New, In Progress, Ready for Review, QA In Progress, Fixed, Waiting, Closed. Complete a WI → Closed. Mark a duplicate → Status__c='Duplicate' + Related_Work__c (NOT Closed - Duplicate, which a trigger reverts).

Open queries: WHITELIST, never blacklist

"Open/unfinished" queries MUST use Status__c IN (<open list>), not NOT IN (<terminal>) — a blacklist leaks legacy terminals (Closed-U/Ftest, Tested, the Bug-no-fix set) absent from the current picklist. The open list lives in statuses.md.

CLI tips

  • --json for parseable output (not --result-format json)
  • Parse with jq, not python
  • sf data create record / sf data update record for single-record writes
  • Aggregate (COUNT/GROUP BY) can't paginate — no queryMore, hard cap 200 rows. Errors Aggregate query does not support queryMore() past that. Always add LIMIT, and scope (e.g. Epic__c IN (...)) so the group set stays ≤200. Plain (non-aggregate) SELECT also returns one 200-row batch per call via the CLI — for full sets, filter narrower or page, don't assume one query returns everything.
  • Salesforce Ids come in 15-char (case-sensitive) and 18-char (case-insensitive) forms — same record. A lookup field (Epic__c) and the parent's Id may differ in length across queries. Match on the first 15 chars (id[0:15]), never raw string equality.
  • Field aliasing is aggregate-only. SELECT Name n FROM ... on a plain query errors only aggregate expressions use field aliasing. Alias only COUNT()/GROUP BY selects; for plain selects use the full path (Development_Lead__r.Name) and read it by that key in jq.

© 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 3 other files in .claude/skills/gus-cli of forcedotcom/salesforcedx-vscode.

  • SKILL.md
  • epics.md
  • statuses.md
  • writes.md

Open the folder on GitHubat commit f7bb6fe

Compare with similar skills

Gus CLI 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.

Gus CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gus CLI this skillforcedotcom/salesforcedx-vscode1k—~3.3kAutomated safety check: PassBSD-3-Clause
Soql Lib Query Builderbeyond-the-cloud-dev/soql-lib154—~4.3kAutomated safety check: PassMIT
Sf DatacloudJaganpro/sf-skills424—~2.7kAutomated safety check: PassMIT
Soql Lib Selectorbeyond-the-cloud-dev/soql-lib154—~2kAutomated safety check: PassMIT
Dev SetupPortwood-Global-Solutions/Portwood125—~1.1kAutomated safety check: PassApache-2.0
Sf FlowJaganpro/sf-skills424—~1.8kAutomated safety check: PassMIT

Similar skills

  • Soql Lib Query Builder

    beyond-the-cloud-dev/soql-lib

    Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).

    154 GitHub stars~4.3k tokensUpdated 4 days ago
    Sales & SupportAuto-check passed
  • Sf Datacloud

    Jaganpro/sf-skills

    Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows.

    424 GitHub stars~2.7k tokensUpdated 5 mo ago
    Sales & SupportAuto-check passed
  • Soql Lib Selector

    beyond-the-cloud-dev/soql-lib

    Creates Salesforce Apex selector classes using the SOQL Lib selector pattern.

    154 GitHub stars~2k tokensUpdated 4 days ago
    Sales & SupportAuto-check passed
  • Dev Setup

    Portwood-Global-Solutions/Portwood

    Get from a fresh clone of Portwood to a working, fully-tested Salesforce org.

    125 GitHub stars~1.1k tokensUpdated 2 days ago
    Sales & SupportAuto-check passed
  • Sf Flow

    Jaganpro/sf-skills

    Creates and validates Salesforce Flows with 110-point scoring.

    424 GitHub stars~1.8k tokensUpdated 5 mo ago
    Sales & SupportAuto-check passed
  • Apply a Salesforce sandbox post-copy automation JSON config against a target org.

    1.1k GitHub stars~5.3k tokensUpdated 5 days ago
    Sales & SupportAuto-check: notes

More from forcedotcom/salesforcedx-vscode

All 37 skills in this repo
  • Command UI

    forcedotcom/salesforcedx-vscode

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

    1k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • 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

Works with

Categories

Questions about Gus CLI

What does Gus CLI do?

Interact with the Gus Salesforce org via CLI (sf). An agent skill from forcedotcom/salesforcedx-vscode. Gus CLI is an agent skill from forcedotcom/salesforcedx-vscode. Interact with the Gus Salesforce org via CLI (sf).

When should I use Gus CLI?

Gus CLI fits situations like: user mentions Gus; GUS/Git2Gus workflows.

How do I install Gus CLI in Claude Code?

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

How do I install Gus CLI in Codex?

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

Can I use Gus CLI 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 gus-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gus-cli, .gemini/skills/gus-cli, .github/skills/gus-cli and .opencode/skills/gus-cli in your project.

What does Gus CLI need to run?

Going by SKILL.md and its folder, Gus CLI needs the command-line tools its instructions call (sf).

Does Gus CLI 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 Gus CLI 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 Gus CLI use?

Gus CLI 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 Gus CLI use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gus CLI?

Skills that share tags, products or a category with Gus CLI: Soql Lib Query Builder (beyond-the-cloud-dev/soql-lib, 154 stars), Sf Datacloud (Jaganpro/sf-skills, 424 stars), Soql Lib Selector (beyond-the-cloud-dev/soql-lib, 154 stars) and Dev Setup (Portwood-Global-Solutions/Portwood, 125 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gus CLI?

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.