User Story Writer
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
Triage the team's open GUS backlog — propose closing done-but-open work items (with code/test citations), flag under-specified items for grilling, catch wrong-epic / orphan / unpointed / dead-link…
$ npx skills add forcedotcom/salesforcedx-vscode --skill backlog-grooming -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode backlog-grooming --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/backlog-grooming .claude/skills/backlog-grooming && 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 "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .claude/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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/backlog-groomingType 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 backlog-grooming -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode backlog-grooming --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/backlog-grooming .agents/skills/backlog-grooming && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .agents/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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 backlog-grooming -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode backlog-grooming --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/backlog-grooming .cursor/skills/backlog-grooming && 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 "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .cursor/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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/backlog-grooming--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 backlog-grooming -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install forcedotcom/salesforcedx-vscode backlog-grooming --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/backlog-grooming .gemini/skills/backlog-grooming && 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 "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .gemini/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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 backlog-groomingInstalls 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 backlog-grooming -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/backlog-grooming .github/skills/backlog-grooming && 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 "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .github/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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 backlog-grooming -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 backlog-grooming --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/backlog-grooming .opencode/skills/backlog-grooming && 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 "backlog-grooming" agent skill from https://github.com/forcedotcom/salesforcedx-vscode/tree/develop/.claude/skills/backlog-grooming into .opencode/skills/backlog-grooming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "backlog-grooming", 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.
backlog-groomingTriage the team's open GUS backlog — propose closing done-but-open work items (with code/test citations), flag under-specified items for grilling, catch wrong-epic / orphan / unpointed / dead-link…
Backlog Grooming is an agent skill from forcedotcom/salesforcedx-vscode. Triage the team's open GUS backlog — propose closing done-but-open work items (with code/test citations), flag under-specified items for grilling, catch wrong-epic / orphan / unpointed / dead-link items, and close completed epics. User-invoked.
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `checks.md`).
It sits in Product & Project Management, covering Task management, User stories and Requirements gathering. The repository describes itself as: Salesforce Extensions for VS Code. The licence is BSD-3-Clause.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 27807f6. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
gus.lightning.force.comFrom 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.
Backlog Grooming loads about 1.5k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 711 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 27807f6, republished under its BSD-3-Clause licence (© forcedotcom). 711 words, ~1,539 tokens.
.claude/skills/backlog-grooming/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Triage pass over open GUS work items + epics. Every finding is a proposal — never auto-write. Output: one report file, then confirm-and-execute.
CLI mechanics (queries, statuses, IDs, create/update, Duplicate handling, aggregate-query limits, 15-vs-18-char Ids) live in gus-cli — this skill never restates them.
Scale is real: ~900+ open WIs across ~45 epics. Two tiers:
gus alias + runner identity per gus-cli.Done when: alias resolves, scope chosen.
Aggregates over the whole team — one query each, no per-WI memory. Mind the gus-cli ## CLI tips aggregate-paginate cap (200 rows, needs LIMIT) + 15-vs-18-char Id rule.
Scrum_Team__c = <team> (the authoritative "team backlog" set; see gus-cli ## Work items "Team's open"). Use the whitelist Status__c IN (<open list>) from gus-cli ## Open queries — NOT a NOT IN exclusion (legacy statuses like Closed-U/Ftest/Tested leak through a blacklist). orphan = + Epic__c=null, unpointed = + Story_Points__c=null. For bulk-point cleanup, also filter RecordType.Name IN ('User Story','Bug').Description__c, Development_Lead__c, Scheduled_Build__c. Drop separator epics (names like ===== below the line =====) — board dividers, not real.GROUP BY Epic__c for open-WIs (whitelist Status__c IN (<open list>), same as above) and for total-WIs (any status), each scoped Epic__c IN (<the open-epic Ids>) LIMIT 200. Join GROUP-BY keys to the epic list on first 15 chars (truncate both sides). Note: GROUP BY only returns epics that HAVE WIs — derive empty-epic by set difference (open-epic list MINUS total-WI keys), not from the query rows. Then epic-complete = in total-keys, not in open-keys; epic-ownerless = Development_Lead__c null. See checks.md.(Scope by Scrum_Team__c and by epic-membership can diverge — an orphan WI belongs to the team but no epic; per-epic sums won't equal the team total. Both are intended: team count for headline, epic-IN for per-epic.)
Done when: every team-wide check in checks.md has a count or list. High-volume counts (orphans, unpointed, ownerless) reported as a number + sample, not a per-item list.
For the chosen epic, pull its open WIs (whitelist Status__c IN (<open list>); SELECT Id, Name, Subject__c, Status__c, Story_Points__c, RecordType.Name, Details__c, Details_and_Steps_to_Reproduce__c (Bug-type body — see checks.md Readiness), Assignee__c). Run the per-WI checks in checks.md: readiness (grill / ai-auto), wrong-epic, open-vs-open dup, dead-link, merged-not-Completed, sequencing-health. Then the gated done-but-open investigation (step 4).
Done when: every open WI in the epic evaluated by every per-WI check; each emits a list (possibly empty) of {WI, evidence, proposed action}.
caveman:cavecrew-investigator or Explore). Note: WIs may reference PRs in other repos (e.g. forcedotcom/apex-language-support) — the investigator follows those via gh. Each: blame the cited/likely area → introducing commit → PR → owning WI name. Returns {tier, citation, causingPR, relatedWI}. See checks.md for tier bar + subagent prompt.Done when: every filtered candidate has a verdict; drop count logged.
Write .claude/backlog-grooming-<YYYY-MM-DD>.md (gitignored). Section per check; each finding = WI/Epic Name + link + evidence/citation + proposed action + tier (done-but-open only). Order high-confidence → low. Top summary: counts per check, scope, investigation drop count.
Done when: file written, every finding present with its citation, chat shows the summary table.
(Dry-run mode: if the user asked for read-only / validation, stop here — list what would be proposed, perform no writes.)
Walk findings with the user. Per gus-cli ## Safety: present each write, act only on explicit yes. High-volume buckets (orphans, unpointed) → offer bulk action or top-N, not one-by-one. Execute approved writes (Close/Duplicate+Related_Work__c, epic close, [ai-auto] tag, epic move, dev-lead tag, point=2). Grill candidates not executed here — user later runs grill-me on ones they pick.
Done when: every approved write succeeded (verify per gus-cli), report annotated with actioned vs deferred.
© 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 1 other file in .claude/skills/backlog-grooming of forcedotcom/salesforcedx-vscode.
Open the folder on GitHubat commit 27807f6
Backlog Grooming 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 |
|---|---|---|---|---|---|---|
| Backlog Grooming this skillforcedotcom/salesforcedx-vscode | 1k | — | ~1.5k | Automated safety check: Pass | BSD-3-Clause | |
| User Story Writerdeanpeters/Product-Manager-Skills | 7.2k | 2 repos | ~2.9k | Automated safety check: Pass | Custom licence | |
| PRD Developmentdeanpeters/Product-Manager-Skills | 7.2k | 3 repos | ~6.2k | Automated safety check: Pass | Custom licence | |
| Feature ForgeJeffallan/claude-skills | 12k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Specificationcitypaul/.dotfiles | 739 | — | ~2.2k | Automated safety check: Pass | Custom licence | |
| Find Gapscitypaul/.dotfiles | 739 | — | ~6.6k | Automated safety check: Pass | Custom licence |
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
deanpeters/Product-Manager-Skills
Builds a structured PRD that ties problem, users, solution and success criteria together, turning discovery notes into a document engineers can act on.
Jeffallan/claude-skills
Runs a structured requirements interview to produce a feature specification with EARS requirements, acceptance criteria and an implementation checklist.
citypaul/.dotfiles
Turn fuzzy intent into shared understanding and acceptance criteria — specification as a conversation, run one question at a time, before any story is split or planned.
citypaul/.dotfiles
Adversarially review an existing written artifact — stories, plans, acceptance criteria, specs, or design mocks — to surface missing states, unhandled edge cases, unstated assumptions, unverifiable…
cyanluna-git/cyanluna.skills
Refine backlog requirements through structured user interview.
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.
Triage the team's open GUS backlog — propose closing done-but-open work items (with code/test citations), flag under-specified items for grilling, catch wrong-epic / orphan / unpointed / dead-link…. Backlog Grooming is an agent skill from forcedotcom/salesforcedx-vscode. Triage the team's open GUS backlog — propose closing done-but-open work items (with code/test citations), flag under-specified items for grilling, catch wrong-epic / orphan / unpointed / dead-link items, and close completed epics.
Backlog Grooming fits situations like: tasks that involve Task management; tasks that involve User stories; tasks that involve Requirements gathering.
Run `npx skills add forcedotcom/salesforcedx-vscode --skill backlog-grooming -a claude-code`. Or copy the skill folder (.claude/skills/backlog-grooming in forcedotcom/salesforcedx-vscode) into .claude/skills/backlog-grooming in your project. Claude Code loads it when a task matches its description.
Run `npx skills add forcedotcom/salesforcedx-vscode --skill backlog-grooming -a codex`. Or copy the skill folder (.claude/skills/backlog-grooming in forcedotcom/salesforcedx-vscode) into .agents/skills/backlog-grooming 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 backlog-grooming -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/backlog-grooming, .gemini/skills/backlog-grooming, .github/skills/backlog-grooming and .opencode/skills/backlog-grooming in your project.
SKILL.md names no scripts, command-line tools or credentials: Backlog Grooming is instructions for the agent only.
SKILL.md names 1 domain. As links in the text: gus.lightning.force.com. 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.
Backlog Grooming 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 1.5k tokens (SKILL.md is roughly 6.2k 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 Backlog Grooming: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), PRD Development (deanpeters/Product-Manager-Skills, 7.2k stars), Feature Forge (Jeffallan/claude-skills, 12k stars) and Specification (citypaul/.dotfiles, 739 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 8, 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.