Web Console Local Traces
forcedotcom/salesforcedx-vscode
Unblock hosted Web Console OTLP to localhost:4318. An agent skill from forcedotcom/salesforcedx-vscode.
Decide whether a change in sfdx-hardis or vscode-sfdx-hardis breaks a lab of the sfdx-hardis training, and name the labs it touches.
$ npx skills add hardisgroupcom/sfdx-hardis --skill training-impact -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hardisgroupcom/sfdx-hardis training-impact --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/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/training-impact .claude/skills/training-impact && 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 "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .claude/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impactType 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 hardisgroupcom/sfdx-hardis --skill training-impact -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hardisgroupcom/sfdx-hardis training-impact --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/training-impact .agents/skills/training-impact && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .agents/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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 hardisgroupcom/sfdx-hardis --skill training-impact -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hardisgroupcom/sfdx-hardis training-impact --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/training-impact .cursor/skills/training-impact && 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 "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .cursor/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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/hardisgroupcom/sfdx-hardis.git --path .claude/skills/training-impact--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 hardisgroupcom/sfdx-hardis --skill training-impact -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hardisgroupcom/sfdx-hardis training-impact --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/training-impact .gemini/skills/training-impact && 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 "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .gemini/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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 hardisgroupcom/sfdx-hardis training-impactInstalls 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 hardisgroupcom/sfdx-hardis --skill training-impact -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/training-impact .github/skills/training-impact && 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 "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .github/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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 hardisgroupcom/sfdx-hardis --skill training-impact -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hardisgroupcom/sfdx-hardis training-impact --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/training-impact .opencode/skills/training-impact && 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 "training-impact" agent skill from https://github.com/hardisgroupcom/sfdx-hardis/tree/main/.claude/skills/training-impact into .opencode/skills/training-impact/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "training-impact", 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.
training-impactDecide whether a change in sfdx-hardis or vscode-sfdx-hardis breaks a lab of the sfdx-hardis training, and name the labs it touches.
Training Impact is an agent skill from hardisgroupcom/sfdx-hardis. Decide whether a change in sfdx-hardis or vscode-sfdx-hardis breaks a lab of the sfdx-hardis training, and name the labs it touches. Load it for any change to a command name or flag, a prompt, --json output, a config key, a report file, a documentation page URL, an LWC panel, or any behavior a lab walks through. Also use it when the user says "training impact", "does this break the course", "which labs use this", or asks to check the training before merging.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud. It works with Salesforce and Visual Studio Code. The repository describes itself as: French-army-knife Toolbox for Salesforce. Orchestrates base commands and assist users with interactive wizards to make much more than native Salesforce CLI + Allows you to define…. The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9625b22. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodegitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.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.
Training Impact loads about 2.7k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 1,188 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, GlobAutomated 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 hardisgroupcom/sfdx-hardis at commit 9625b22, republished under its AGPL-3.0 licence (© hardisgroupcom). 1,188 words, ~2,655 tokens.
.claude/skills/training-impact/SKILL.md (or your agent's skills folder).Three repositories move together now: sfdx-hardis, vscode-sfdx-hardis and sfdx-hardis-training. The existing rule that every change states its VS Code extension impact has a sibling: every change states its training impact, even when it is "none".
This skill answers one question: which labs does this change break, and does it need a training Pull Request?
It never edits the training repository. [[training-update]] does that, once this says there is an impact.
sfdx-hardis-training is always a sibling of this repository, exactly like vscode-sfdx-hardis
already is:
C:/git/ (or wherever this repository lives)
├── sfdx-hardis/ <- the skills live here, and only here
├── sfdx-hardis-training/ <- sibling, cloned if absent
└── vscode-sfdx-hardis/ <- sibling, the screenshot harnessThe path is never configurable: a fixed layout is what lets the skills act without asking.
Clone it if it is missing, do not fail and do not work from a temporary directory:
[ -d ../sfdx-hardis-training ] || git clone https://github.com/hardisgroupcom/sfdx-hardis-training.git ../sfdx-hardis-training
git -C ../sfdx-hardis-training fetch --all --pruneRead from the latest main unless the user says otherwise.
../sfdx-hardis-training/training-manifest.json, generated from the depends_on front matter of
every lab. It holds, per lab: the commands, flags, config keys, documentation pages, panels and
screenshots it relies on, plus a reverseIndex keyed by each of those.
node -e "
const m = require('../sfdx-hardis-training/training-manifest.json');
const key = process.argv[1], value = process.argv[2];
console.log((m.reverseIndex[key] || {})[value] || 'no lab depends on it');
" commands hardis:work:saveIt works offline and against the exact checked-out state, which is what makes this a check rather than a habit.
The training ships in English and in French: labs/en/ and labs/fr/, mirrored file for file.
labs/en/ is the reference, and the impact is always computed from it. The manifest is
generated from the English front matter, so reverseIndex names English lab ids and nothing else.
That is correct and it is not a gap: a lab's depends_on is the same in every language, because the
commands, flags, config keys and panels it relies on are the same.
What it means for the answer you give: a lab that is affected is affected in every locale. Each
manifest entry carries a translations block naming the file and the URL of that lab in each other
locale, so name them:
node -e "
const m = require('../sfdx-hardis-training/training-manifest.json');
const lab = m.labs.find((one) => one.id === process.argv[1]);
console.log(lab.file, '+', Object.values(lab.translations || {}).map((t) => t.file).join(', '));
" lab-2-3A change never breaks only the French version, and a French-only fix is never the answer: the
correction goes into labs/en/ first and the translations follow. [[training-update]] has the
procedure.
hardis:work:save)--check, --agent)autoCleanTypes, useDeltaDeployment)salesforce-devops-config-cleaning)pipeline, backpromote, deploymentAction)| What changed | Training impact | What it needs |
|---|---|---|
| A command is renamed or removed | Breaking. Every lab naming it stops working | A training Pull Request, in the same effort |
| A flag is renamed, or its default changes | Breaking if a lab relies on the behavior | A training Pull Request |
| A prompt's wording or its choices change | Text only, unless a lab tells the learner what to pick | Update the lab step |
| A config key is renamed | Breaking. Labs quote these in "Under the hood" blocks | A training Pull Request |
--json output or a report file changes shape | Breaking if scripts/verify/rules.mjs reads it | A training Pull Request, and re-run the audit |
| A documentation page is renamed | Breaking link. link-check.yml catches it monthly, which is too late | Update depends_on.docs and the lab links |
| An LWC panel is redesigned | Screenshots are wrong, the text may still be right | [[training-update]] re-runs the Helios capture |
| A new feature, nothing existing changed | None, unless it replaces a path a lab takes | Say "none" and move on |
| Behaviour a seeded failure depends on | Breaking, and silent. The lab still reads fine and the failure no longer fires | A training Pull Request, and re-walk the lab |
defaults/ci/manifest/package-no-overwrite.xml | Text and screenshots. Helios ships a copy of it without RemoteSiteSetting, which Lab 3.5 adds | Copy the change into Helios, check Labs 3.3 to 3.5 |
The screenshot rows are never just a re-capture. Every click a lab describes has to be shown, the pills have to be redrawn and every image has to be looked at again. The hard rules for that live in [[training-update]], section Screenshots: read them before sizing a panel change.
That last row is the dangerous one. The training deliberately seeds failures (a field excluded by
.forceignore, a field that cannot be made required, a hardcoded id that trips PMD). A change that
makes one of them stop failing turns a lab into a page describing something that does not happen,
and no test anywhere notices.
node scripts/check-training-impact.mjs
node scripts/check-training-impact.mjs --base mainIt diffs the working tree against the base branch, extracts the command ids, flags, config keys and documentation slugs the diff touches, and names the labs that depend on them. Run it where the JSON schema check already runs.
It is a helper, not an oracle: it cannot see that a behavior changed under an unchanged name. The table above is the part that needs judgement.
In the analysis and the design, a Training impact section:
## Training impact
**Affected labs**: lab-2-3 (Lab 2.3), lab-2-4 (Lab 2.4), in `labs/en/` and `labs/fr/`
`commandsPostDeploy` gains a `retryCount` key. Both labs quote the YAML in their
"Under the hood" block, so both blocks are now incomplete rather than wrong.
No screenshot changes: the editor gains no field.
**Needs a training Pull Request**: yes, small. Load `training-update`.When there is none, say so in one line and name what you checked:
## Training impact
None. The change touches `hardis:org:diagnose:unusedlicenses`, which no lab uses.Worth knowing before you conclude a lab is fine. A pass that checked every claim in the course against the sources found six of the nine Level 2 labs and all eleven Level 3 labs carrying at least one wrong statement, and six of those labs could not be followed at all.
So when you are deciding whether a change affects a lab, do not read the lab and ask "does this still match". Read what the command or the panel does now, and ask whether the lab was ever right. The four shapes that keep appearing:
hardis:work:resetselection soft-resets every
commit since the branch point. A lab said in bold that it does not.sfdxHardisConfigHelper.ts decides what
the settings panel renders; a branch-scoped key is invisible while the scope reads Global.If a change you are assessing lands anywhere near one of those, the honest answer is that the lab needs reading against the source, not just patching.
One Pull Request per repository, cross-linked, exactly like the CLI and extension rule. Order: CLI first, then the extension, then the training. A change that invalidates a lab is not finished until the training Pull Request is open, and that Pull Request states which labs it re-verified.
Labs are versioned against a pinned sfdx-hardis version, so a breaking change does not break learners mid-course. The training Pull Request bumps the pin and updates the labs together.
vscode-sfdx-hardis skill, for the extension side of the same change© hardisgroupcom, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/training-impact of hardisgroupcom/sfdx-hardis.
Open the folder on GitHubat commit 9625b22
Training Impact 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 |
|---|---|---|---|---|---|---|
| Training Impact this skillhardisgroupcom/sfdx-hardis | 401 | — | ~2.7k | Automated safety check: Notes | AGPL-3.0 | |
| Web Console Local Tracesforcedotcom/salesforcedx-vscode | 1k | — | ~796 | Automated safety check: Pass | BSD-3-Clause | |
| Wdio Testingansible/vscode-ansible | 487 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Command UIforcedotcom/salesforcedx-vscode | 1k | — | ~1.4k | Automated safety check: Pass | BSD-3-Clause | |
| Devsydevsy-org/devsy | 110 | — | ~1.7k | Automated safety check: Pass | MPL-2.0 | |
| Services Extension Consumptionforcedotcom/salesforcedx-vscode | 1k | — | ~5k | Automated safety check: Pass | BSD-3-Clause |
forcedotcom/salesforcedx-vscode
Unblock hosted Web Console OTLP to localhost:4318. An agent skill from forcedotcom/salesforcedx-vscode.
ansible/vscode-ansible
Write, run, and debug WebDriverIO (WDIO) UI tests for the Ansible VS Code extension.
forcedotcom/salesforcedx-vscode
Command palette, CodeLens, context menus, package.nls titles, and NotificationModeService.
devsy-org/devsy
Operate Devsy workspaces and providers for end users. An agent skill from devsy-org/devsy.
forcedotcom/salesforcedx-vscode
Consume the salesforcedx-vscode-services extension API. An agent skill from forcedotcom/salesforcedx-vscode.
certinia/debug-log-analyzer
Write, review or trim CHANGELOG.md entries. An agent skill from certinia/debug-log-analyzer.
hardisgroupcom/sfdx-hardis
Walks the sfdx-hardis training course end to end as a learner would, against a real Developer Edition org and fork, fixing broken steps and screenshots that no longer match.
hardisgroupcom/sfdx-hardis
Runs a full end-to-end test of sfdx-hardis promotion branches and backpromote against real Salesforce orgs and a throwaway repository, then writes a report.
hardisgroupcom/sfdx-hardis
Explains how the sfdx-hardis Salesforce CLI plugin is built: its TypeScript and Oclif stack, command layout, agent-mode flag and provider classes for git, notifications and AI.
hardisgroupcom/sfdx-hardis
Style rules for adding CHANGELOG.md entries: short, user-facing bullets grouped by command under the beta section, each linking the command's docs page.
hardisgroupcom/sfdx-hardis
Documentation standards for sfdx-hardis commands (description format with Command Behavior and Technical explanations sections, MkDocs site, build:doc).
hardisgroupcom/sfdx-hardis
Decision framework for fixing jscpd (copy-paste detector) errors.
Works with
Categories
Decide whether a change in sfdx-hardis or vscode-sfdx-hardis breaks a lab of the sfdx-hardis training, and name the labs it touches. Training Impact is an agent skill from hardisgroupcom/sfdx-hardis. Decide whether a change in sfdx-hardis or vscode-sfdx-hardis breaks a lab of the sfdx-hardis training, and name the labs it touches.
Training Impact fits situations like: the user says training impact; does this break the course; which labs use this; asks to check the training before merging.
Run `npx skills add hardisgroupcom/sfdx-hardis --skill training-impact -a claude-code`. Or copy the skill folder (.claude/skills/training-impact in hardisgroupcom/sfdx-hardis) into .claude/skills/training-impact in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hardisgroupcom/sfdx-hardis --skill training-impact -a codex`. Or copy the skill folder (.claude/skills/training-impact in hardisgroupcom/sfdx-hardis) into .agents/skills/training-impact 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 hardisgroupcom/sfdx-hardis --skill training-impact -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/training-impact, .gemini/skills/training-impact, .github/skills/training-impact and .opencode/skills/training-impact in your project.
Going by SKILL.md and its folder, Training Impact needs the command-line tools its instructions call (node and git). Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Training Impact is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k 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 Training Impact: Web Console Local Traces (forcedotcom/salesforcedx-vscode, 1k stars), Wdio Testing (ansible/vscode-ansible, 487 stars), Command UI (forcedotcom/salesforcedx-vscode, 1k stars) and Devsy (devsy-org/devsy, 110 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hardisgroupcom (a GitHub organization) maintains it in hardisgroupcom/sfdx-hardis, which has 401 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 2026.
Source: hardisgroupcom/sfdx-hardis on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.