/platform-environment-validate
Validate and configure the local Salesforce development environment. Runs a prerequisite scan showing π΄/π‘/π’ status for all required tools (Salesforce CLI, Code Analyzer plugin, Node.js, NPM, Git, Salesforce MCP, Source Tracking) and offers to install or update
$ npx -y skills add forcedotcom/afv-library --skill platform-environment-validate --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition β
- You can call itInvoke it directly when you want it.
- Slash command
/platform-environment-validate
Context preview
The summary Claude sees to decide when to auto-load this skill.
Validate and configure the local Salesforce development environment. Runs a prerequisite scan showing π΄/π‘/π’ status for all required tools (Salesforce CLI, Code Analyzer plugin, Node.js, NPM, Git, Salesforce MCP, Source Tracking) and offers to install or update
SKILL.md
platform-environment-validate.SKILL.mdname: platform-environment-validate
description: "Validate and configure the local Salesforce development environment. Runs a prerequisite scan showing π΄/π‘/π’ status for all required tools (Salesforce CLI, Code Analyzer plugin, Node.js, NPM, Git, Salesforce MCP, Source Tracking) and offers to install or update missing/outdated items. TRIGGER when the user runs /salesforce-development:platform-environment-validate, asks to 'check my setup', 'validate tools', 'verify prerequisites', 'am I set up correctly', or reports that a tool is missing or not working. DO NOT TRIGGER for: org authentication issues (use /salesforce-development:login), deployment problems (use platform-metadata-deploy), or general status checks (use /salesforce-development:status)."
allowed-tools:
- Bash
- Read
Validating: Salesforce Development Environment
Validate all required prerequisites and surface a clear, actionable status report. This skill is on-demand β it does not run automatically on session start. Run it explicitly to check or repair your local setup.
Phase 1: Prerequisite Scan
Run the tool check:
${CLAUDE_PLUGIN_ROOT}/scripts/sf-context check-toolsThe output is a JSON object with a `tools` array (plus a `diagnostic` block on any critical failure).
**The banner is painted for you β do not reproduce it.** When `check-tools` runs, the plugin paints the framed **"Ready to build on Salesforce?"** banner deterministically on the visible channel β one status row per tool, the footer verdict, and the wayfinding footer β exactly like the SessionStart banner. It is a **Tier-1 surface**: read the JSON for your own understanding, but do **NOT** reproduce, redraw, or re-render the banner. Add only a short read of what the result means for the user, then go to **Phase 2**.
The painted banner looks like this (illustrative β the version/message text in each row comes straight from the JSON: `version` for π’, `message` + fix hint for π‘/π΄, the note for βΉοΈ; the values below show the style, not fixed strings):
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Ready to build on Salesforce? checking your toolchainβ¦
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π’ Salesforce CLI v2.144.6
π’ Code Analyzer v5.14.0 Β· JIT, auto-installs on first use
π’ Node.js v22.11.0 LTS
π’ NPM v10.9.0
π’ Git v2.50.1
π’ Salesforce MCP (config) .mcp.json + proxy present
π’ Salesforce MCP (endpoint) org instance reachable
βΉοΈ Salesforce MCP (process) confirm with /mcp or /doctor
π’ Source Tracking enabled
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β toolchain ready (skill: platform-environment-validate)
Each row's status dot carries the state β π΄ `critical` (missing or below minimum β Salesforce development cannot proceed), π‘ `warn` (installed but outdated, non-LTS, or misconfigured), π’ `ok`, βΉοΈ `info` (a contextual note that can't be auto-verified, e.g. MCP process health) β and the framed footer gives the verdict plus the single most relevant `Next:` step. The JSON `status` field is the source of truth per tool; use these states when you write your short read.
**If the banner did not paint** (an older Claude Code build, or a paint fallback), do **not** hand-render it from the JSON. Print it with the deterministic renderer instead:
${CLAUDE_PLUGIN_ROOT}/scripts/sf-context readiness-bannerThis reads the same scan result `check-tools` just recorded and prints the identical framed banner β rows in fixed order, the footer verdict, and the "you don't memorize commands here" wayfinding footer with its `Next:` step β so ordering, padding, counts, and next-step selection are decided once in the script, never re-derived by hand. The `check-tools` JSON stays the authoritative, machine-readable result.
**Deterministic results β do NOT override a failure:** the JSON report is the authoritative, machine-readable result. If a tool reports π΄/π‘, report it as-is. Do **not** re-run the tool a different way (PowerShell, a raw shell probe, a different command) and then present the result as π’ β a fallback that happens to find the tool does **not** mean the deterministic check passed. A failed check must stay failed until that **same** `check-tools` check passes. When the report includes a `diagnostic` block (attached on any critical failure), surface it: it carries the platform, active shell, working directory, plugin root, and the **resolved executable paths** β the fastest way to see why a tool didn't resolve (e.g. a Windows `sf.cmd` not on `PATH`). The diagnostic is secret-free by design; never add tokens or org auth to it.
**MCP is reported as three distinct rows β never inferred from one another:** `Salesforce MCP (config)` (is `.mcp.json` + the `sf-mcp-proxy.bundled.js` present?), `Salesforce MCP (endpoint)` (is the platform endpoint reachable?), and `Salesforce MCP (process)` (is the MCP process actually healthy?). The process row is reported as βΉοΈ **informational** (not a warning) β this script cannot see the MCP subprocess that Claude Code owns, so a green config/endpoint must **not** be presented as a working MCP. Confirm process health with `/mcp` or `/doctor`. The endpoint row probes the org **instance URL** as a connectivity proxy, not the platform-MCP endpoint itself.
Tools Checked
| Tool | Minimum Requirement | Verification | |---|---|---| | Salesforce CLI | Present, and on the latest release | `sf --version` (π‘ when an update is available) | | Code Analyzer plugin | Installed **or** JIT-registered | `sf plugins inspect @salesforce/plugin-code-analyzer`, falling back to the CLI's `oclif.jitPlugins` registry | | Node.js | >= 18 (even/LTS) | `node --version` | | NPM | >= 3.10 | `npm --version` | | Git | Must be present | `git --version` | | Salesforce MCP (config) | `.mcp.json`
Read more
name: platform-environment-validate description: "Validate and configure the local Salesforce development environment. Runs a prerequisite scan showing π΄/π‘/π’ status for all required tools (Salesforce CLI, Code Analyzer plugin, Node.js, NPM, Git, Salesforce MCP, Source Tracking) and offers to install or update missing/outdated items. TRIGGER when the user runs /salesforce-development:platform-environment-validate, asks to 'check my setup', 'validate tools', 'verify prerequisites', 'am I set up correctly', or reports that a tool is missing or not working. DO NOT TRIGGER for: org authentication issues (use /salesforce-development:login), deployment problems (use platform-metadata-deploy), or general status checks (use /salesforce-development:status)." allowed-tools: - Bash - Read
Validating: Salesforce Development Environment
Validate all required prerequisites and surface a clear, actionable status report. This skill is on-demand β it does not run automatically on session start. Run it explicitly to check or repair your local setup.
Phase 1: Prerequisite Scan
Run the tool check:
${CLAUDE_PLUGIN_ROOT}/scripts/sf-context check-toolsThe output is a JSON object with a `tools` array (plus a `diagnostic` block on any critical failure).
**The banner is painted for you β do not reproduce it.** When `check-tools` runs, the plugin paints the framed **"Ready to build on Salesforce?"** banner deterministically on the visible channel β one status row per tool, the footer verdict, and the wayfinding footer β exactly like the SessionStart banner. It is a **Tier-1 surface**: read the JSON for your own understanding, but do **NOT** reproduce, redraw, or re-render the banner. Add only a short read of what the result means for the user, then go to **Phase 2**.
The painted banner looks like this (illustrative β the version/message text in each row comes straight from the JSON: `version` for π’, `message` + fix hint for π‘/π΄, the note for βΉοΈ; the values below show the style, not fixed strings):
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ Ready to build on Salesforce? checking your toolchainβ¦ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π’ Salesforce CLI v2.144.6 π’ Code Analyzer v5.14.0 Β· JIT, auto-installs on first use π’ Node.js v22.11.0 LTS π’ NPM v10.9.0 π’ Git v2.50.1 π’ Salesforce MCP (config) .mcp.json + proxy present π’ Salesforce MCP (endpoint) org instance reachable βΉοΈ Salesforce MCP (process) confirm with /mcp or /doctor π’ Source Tracking enabled ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β toolchain ready (skill: platform-environment-validate)
Each row's status dot carries the state β π΄ `critical` (missing or below minimum β Salesforce development cannot proceed), π‘ `warn` (installed but outdated, non-LTS, or misconfigured), π’ `ok`, βΉοΈ `info` (a contextual note that can't be auto-verified, e.g. MCP process health) β and the framed footer gives the verdict plus the single most relevant `Next:` step. The JSON `status` field is the source of truth per tool; use these states when you write your short read.
**If the banner did not paint** (an older Claude Code build, or a paint fallback), do **not** hand-render it from the JSON. Print it with the deterministic renderer instead:
${CLAUDE_PLUGIN_ROOT}/scripts/sf-context readiness-bannerThis reads the same scan result `check-tools` just recorded and prints the identical framed banner β rows in fixed order, the footer verdict, and the "you don't memorize commands here" wayfinding footer with its `Next:` step β so ordering, padding, counts, and next-step selection are decided once in the script, never re-derived by hand. The `check-tools` JSON stays the authoritative, machine-readable result.
**Deterministic results β do NOT override a failure:** the JSON report is the authoritative, machine-readable result. If a tool reports π΄/π‘, report it as-is. Do **not** re-run the tool a different way (PowerShell, a raw shell probe, a different command) and then present the result as π’ β a fallback that happens to find the tool does **not** mean the deterministic check passed. A failed check must stay failed until that **same** `check-tools` check passes. When the report includes a `diagnostic` block (attached on any critical failure), surface it: it carries the platform, active shell, working directory, plugin root, and the **resolved executable paths** β the fastest way to see why a tool didn't resolve (e.g. a Windows `sf.cmd` not on `PATH`). The diagnostic is secret-free by design; never add tokens or org auth to it.
**MCP is reported as three distinct rows β never inferred from one another:** `Salesforce MCP (config)` (is `.mcp.json` + the `sf-mcp-proxy.bundled.js` present?), `Salesforce MCP (endpoint)` (is the platform endpoint reachable?), and `Salesforce MCP (process)` (is the MCP process actually healthy?). The process row is reported as βΉοΈ **informational** (not a warning) β this script cannot see the MCP subprocess that Claude Code owns, so a green config/endpoint must **not** be presented as a working MCP. Confirm process health with `/mcp` or `/doctor`. The endpoint row probes the org **instance URL** as a connectivity proxy, not the platform-MCP endpoint itself.
Tools Checked
| Tool | Minimum Requirement | Verification | |---|---|---| | Salesforce CLI | Present, and on the latest release | `sf --version` (π‘ when an update is available) | | Code Analyzer plugin | Installed **or** JIT-registered | `sf plugins inspect @salesforce/plugin-code-analyzer`, falling back to the CLI's `oclif.jitPlugins` registry | | Node.js | >= 18 (even/LTS) | `node --version` | | NPM | >= 3.10 | `npm --version` | | Git | Must be present | `git --version` | | Salesforce MCP (config) | `.mcp.json`
This repository provides a curated collection of Salesforce agent skills for building applications.
Repo: forcedotcom/afv-library
Other skills on sf-skills.
- /agentforce-generate
Build, modify, optimize, debug, and deploy agents with Agentforce Agent Script. TRIGGER when: user creates, modifies, optimizes, or asks about .agent files or aiAuthoringBundle metadata; changes agent behavior, responses, or conversation logic; designs agent actions, tools,
Open skill - /agentforce-observe
Analyze production Agentforce agent behavior using session traces and Data Cloud. TRIGGER when: user queries STDM session data or Data Cloud trace records; investigates production agent failures, regressions, or performance issues; asks about session traces, conversation logs,
Open skill - /agentforce-test
Write, run, and analyze structured test suites for Agentforce agents β functional AND security. TRIGGER when: user writes or modifies test spec YAML (AiEvaluationDefinition); runs sf agent test create, run, run-eval, or results commands; asks about test coverage strategy, metric
Open skill - /automation-flow-generate
Generate Salesforce Flows using the MCP tool execute_metadata_action. Use when the user asks to create, build, or generate a flow β including Screen, Autolaunched, Record-Triggered (before/after-save), Scheduled. Also trigger for flow-like requests such as \"when a record is
Open skill - /dx-code-analyzer-configure
Set up, configure, and troubleshoot Salesforce Code Analyzer for any project. Handles installation, prerequisite checks, diagnosing broken setups, creating and editing code-analyzer.yml overrides, engine-specific settings, ignore patterns, severity overrides, and CI/CD pipeline
Open skill - /dx-code-analyzer-custom-rule-create
Create custom Code Analyzer rules for Regex (pattern matching), PMD (XPath/AST for Apex and metadata XML), and ESLint (LWC/JavaScript/TypeScript). Use when users want to enforce coding standards, ban patterns, detect hardcoded values, govern metadata, or add rules not in the
Open skill

