Soql Lib Query Builder
beyond-the-cloud-dev/soql-lib
Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).
Interact with the Gus Salesforce org via CLI (sf). An agent skill from forcedotcom/salesforcedx-vscode.
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .claude/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cliType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/gus-cli .agents/skills/gus-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .agents/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/gus-cli .cursor/skills/gus-cli && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .cursor/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/forcedotcom/salesforcedx-vscode.git --path .claude/skills/gus-cli--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/gus-cli .gemini/skills/gus-cli && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .gemini/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cliInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/gus-cli .github/skills/gus-cli && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .github/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add forcedotcom/salesforcedx-vscode --skill gus-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode gus-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/forcedotcom/salesforcedx-vscode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/gus-cli .opencode/skills/gus-cli && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gus-cli" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/gus-cli into .opencode/skills/gus-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gus-cli", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gus-cliInteract 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). 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f7bb6fe. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
sfFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from forcedotcom/salesforcedx-vscode at commit f7bb6fe, republished under its BSD-3-Clause licence (© forcedotcom). 1,383 words, ~3,328 tokens.
.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.Interact with Gus (Salesforce Agile Accelerator org) via sf CLI. Requires alias gus in sf alias list.
sf data create record / sf data update record after user says yes (or equivalent)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.sf alias list --json; parse result for alias matching gus (case-insensitive)sf org login web -a gus-o gusCache: $HOME/.claude/runner-identity.json — {userId, username, ownerPrefix, slackId, githubLogin}.
sf alias list --json → entry /^gus$/i. Missing → sf org login web -a gus. Value = currentUsername.cached.username === currentUsername) → use it.sf data query --query "SELECT Id FROM User WHERE Username = '<currentUsername>' LIMIT 1" -o gus --result-format json → userIdcurrentUsername to ## Team members row → githubLogin, slackId. ownerPrefix = initials lowercase (Shane McLaughlin → sm; one-word → first 2 chars).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.
| Constant | Value |
|---|---|
| Team ID | a00B0000000w9xPIAQ |
| Product Tag | a1aB000000005G3IAI |
| User Story RecordTypeId | 0129000000006gDAAQ |
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).
Default when unassigned: Platform Dev Tools Scrum Team 005B0000000GIODIA4 – use when work isn't assigned to a person yet.
| Name | Id | GitHub login | Slack ID |
|---|---|---|---|
| Daphne Yang | 005EE000005d0jdYAA | daphne-sfdc | U03CKVATVCY |
| Jonny Hork | 005B0000004pYWjIAM | jonnyhork | WFGT1L8HF |
| Kyle Walker | 005EE0000010oCLYAY | kylewalke | U02GCUGEAUU |
| Madhur Shrivastava | 005EE00000VZK5FYAX | madhur310 | U0852LWKWSW |
| Peter Hale | 005B0000000GFvWIAW | peternhale | WAR9BDB8T |
| Shane McLaughlin | 005B00000024wGBIAY | mshanemc | WB4TF6RFY |
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__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):
| Filter | WHERE clause |
|---|---|
| Mine | Assignee__c = '<userId>' |
| By status | Status__c = 'In Progress' (or other) |
| By epic | Epic__c = '<epicId>' |
| Unpointed | Story_Points__c = null |
| Team's open | Scrum_Team__c = 'a00B0000000w9xPIAQ' AND Status__c IN (<open list>) |
| Epic + open | Epic__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.
Details__c vs Details_and_Steps_to_Reproduce__c)The validated User Story body is Details__c. Three rules, one place:
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.Description__c — a DIFFERENT field (label "Comment", unvalidated). The validated body is Details__c.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.
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.
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 jsonClosed = 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.
Use to pick the right Epic__c when creating work. Query epics first; match by Name/Description. Key epics:
IDEx - Mandates and Updates a3QEE0000023Fm92AE
IDEx - Trust a3QEE0000023FPZ2A2
effect services improvements a3QEE0000026sJ72AI
TDX 262 epics (Code Builder Web, CBLite, Org Browser on Web, LWC on web, Apex Testing Extension, etc.)
Backlog epics (IDE Exp - Core, Extensions, LWC & Aura, etc.)
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.
Subject__c (title), never Details__c[ai-auto]: <subject> [owner/repo] [ai-auto]owner/repo from the target repository's git remote; example: Upgrade Tabulator [forcedotcom/salesforcedx-vscode] [ai-auto]1 Upgrade Tabulator [forcedotcom/salesforcedx-vscode] [ai-auto]Subject__c LIKE '%[ai-auto]%'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.
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/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.
--json for parseable output (not --result-format json)jq, not pythonsf data create record / sf data update record for single-record writesCOUNT/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.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.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
SKILL.md and 3 other files in .claude/skills/gus-cli of forcedotcom/salesforcedx-vscode.
Open the folder on GitHubat commit f7bb6fe
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Gus CLI this skillforcedotcom/salesforcedx-vscode | 1k | — | ~3.3k | Automated safety check: Pass | BSD-3-Clause | |
| Soql Lib Query Builderbeyond-the-cloud-dev/soql-lib | 154 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Sf DatacloudJaganpro/sf-skills | 424 | — | ~2.7k | Automated safety check: Pass | MIT | |
| Soql Lib Selectorbeyond-the-cloud-dev/soql-lib | 154 | — | ~2k | Automated safety check: Pass | MIT | |
| Dev SetupPortwood-Global-Solutions/Portwood | 125 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Sf FlowJaganpro/sf-skills | 424 | — | ~1.8k | Automated safety check: Pass | MIT |
beyond-the-cloud-dev/soql-lib
Builds Salesforce SOQL queries using the SOQL Lib fluent builder API (SOQL.cls).
Jaganpro/sf-skills
Salesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows.
beyond-the-cloud-dev/soql-lib
Creates Salesforce Apex selector classes using the SOQL Lib selector pattern.
Portwood-Global-Solutions/Portwood
Get from a fresh clone of Portwood to a working, fully-tested Salesforce org.
Jaganpro/sf-skills
Creates and validates Salesforce Flows with 110-point scoring.
forcedotcom/sf-skills
Apply a Salesforce sandbox post-copy automation JSON config against a target org.
forcedotcom/salesforcedx-vscode
Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService.
forcedotcom/salesforcedx-vscode
Consume the salesforcedx-vscode-services extension API. An agent skill from forcedotcom/salesforcedx-vscode.
forcedotcom/salesforcedx-vscode
Polish the automated CHANGELOG on develop before the next stable build.
forcedotcom/salesforcedx-vscode
Public API exported by salesforcedx-vscode-core activate(). An agent skill from forcedotcom/salesforcedx-vscode.
forcedotcom/salesforcedx-vscode
Operate a real VS Code instance through drivable-vscode. An agent skill from forcedotcom/salesforcedx-vscode.
forcedotcom/salesforcedx-vscode
Enforces Effect-TS patterns for services, errors, layers, atoms, and Effect.pipe composition.
Works with
Categories
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).
Gus CLI fits situations like: user mentions Gus; GUS/Git2Gus workflows.
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.
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.
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.
Going by SKILL.md and its folder, Gus CLI needs the command-line tools its instructions call (sf).
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.
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.
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.
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.
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.
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.