npx skills add ...
npx skills add forcedotcom/sf-skills --skill platform-deploy-validate
Validate Salesforce metadata before deploying. TRIGGER when the user asks to validate a deploy, do a dry-run, check before deploying, or targets a Production org for any deploy operation. Routes prod targets to `sf project deploy validate` (returns a 10-day quick-deploy job ID) and sandbox/scratch targets to `sf project deploy start --dry-run`. DO NOT TRIGGER for actual deploys (use platform-metadata-deploy) or destructive changes (use platform-destructive-deploy).
npx skills add forcedotcom/sf-skills --skill platform-deploy-validate
Run a server-side validation before deploying metadata. Validation surfaces errors without modifying the org and — for production targets — produces a job ID usable with platform-quick-deploy for a fast, test-free deploy.
Always prefer sf project deploy validate (prod) or sf project deploy start --dry-run (sandbox/scratch) over the Tooling API directly.
Classify the org with the gate's classifier — it is the authoritative source of truth (it handles sandbox/scratch markers, trial and Developer Edition hosts, and dev hubs, and returns one of production|sandbox|scratch|trial|devhub|unknown):
Only production takes the production path (Step 2b); every other result takes the sandbox/scratch path (Step 2a).
Scope flags (use exactly one, not all):
--source-dir <path> — deploy a directory--metadata <Type:Name> — deploy specific components--manifest manifest/package.xml — deploy from manifestDefault test level: omit --test-level for sandboxes (defers to org default). Add --test-level RunLocalTests only if the user asks.
Report back: success/failure, components attempted, any errors. No job ID is returned for dry-runs (this is expected).
Production validations REQUIRE a test level. Use RunLocalTests by default; switch to RunSpecifiedTests --tests <ClassName>... if the user has explicitly listed tests.
The response returns a job ID (result.id) valid for 10 days. Persist it for platform-quick-deploy:
Report:
platform-quick-deploy with this job IDIf validation fails, parse result.details.componentFailures and result.details.runTestResult.failures and surface:
Do NOT propose fixes that change unrelated metadata. Stay scoped to what the validation reported.
--json on every CLI callsf project deploy start against prod from this skill)--ignore-errors or --ignore-warnings during validation; those flags belong to actual deploys, not validationplatform-quick-deploy (do not start a regular deploy against prod).sfdx/last-validation.json so the quick-deploy skill can find itAlways end with:
platform-quick-deploy (with job ID + expiry) OR to platform-metadata-deploy for non-prod