← Claude plugins
Development

Salesforce Development

Salesforce v2.5.0

Build Salesforce apps and agents using these core building blocks: metadata, Apex, deploy/retrieve, security, reporting, and generated installed-versus-available capability discovery.

Create a free account to save this plugin.

From the developer

License

Apache-2.0

Declared components

Skills · Commands · Hooks

Works with

Claude Code

Description

From the marketplace listing

Build Salesforce apps and agents using these core building blocks: metadata, Apex, deploy/retrieve, security, reporting, and generated installed-versus-available capability discovery.

What changed

Oct 27, 2026 · 18:00 UTC

Changed

Web → Id: “wf.6a79599b75814b7938cf7b1f” → “directoryPlugin.93ec5161-1a8c-48e5-b03a-bf192de1aaf9”

Changed

Web → Made by: “Salesforce” → “not provided”

Changed

Web → Subheading: “Salesforce's official plugin for building apps and agents on the Salesforce Platform: metadata, Apex, deploy/retrieve...” → “Build Salesforce apps and agents using these core building blocks: metadata, Apex, deploy/retrieve, security, reporti...”

View comparison →

Oct 24, 2026 · 00:00 UTC

Changed

Catalogs → Official updated; open the comparison for details.

Changed

Github → Source → Sha: “3c15867bdb9dacd515960174c661c706d041bb63” → “d3088edf8776a3c23f55aadead587eb3903be2d3”

View comparison →

Oct 7, 2026 · 18:02 UTC

Changed

Catalogs → Official updated; open the comparison for details.

Changed

Github → Source → Sha: “c217b703b3e5a3c279f1a510d8703161b14bd0a5” → “3c15867bdb9dacd515960174c661c706d041bb63”

View comparison →

Oct 3, 2026 · 22:13 UTC

Added

Catalogs updated; open the comparison for details.

View comparison →

Keywords

Files & skills

salesforce-development · catalog manifest

Saved declaration

{
  "name": "salesforce-development",
  "author": {
    "name": "Salesforce"
  },
  "source": {
    "ref": "main",
    "sha": "d3088edf8776a3c23f55aadead587eb3903be2d3",
    "url": "https://github.com/forcedotcom/sf-skills.git",
    "path": "plugins/builder/salesforce-development",
    "source": "git-subdir"
  },
  "category": "development",
  "homepage": "https://github.com/forcedotcom/sf-skills/tree/main/plugins/builder/salesforce-development",
  "description": "Build Salesforce apps and agents using these core building blocks: metadata, Apex, deploy/retrieve, security, reporting, and generated installed-versus-available capability discovery."
}
salesforce-development · catalog manifest

Skills

"./skills/"

Commands

"./commands/"

Hooks

{
  "Stop": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context feedback-nudge"
        }
      ]
    }
  ],
  "PreToolUse": [
    {
      "hooks": [
        {
          "if": "Bash(sf *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context cli-update-notice"
        },
        {
          "if": "Bash(sf project deploy *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context verify-org"
        },
        {
          "if": "Bash(sf project delete *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context verify-org"
        },
        {
          "if": "Bash(sf project deploy start*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate prod-check"
        },
        {
          "if": "Bash(sf project deploy quick*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate prod-check"
        },
        {
          "if": "Bash(sf project delete*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate destructive"
        },
        {
          "if": "Bash(sf project deploy start*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/bin/lsp-precheck"
        },
        {
          "if": "Bash(sf project deploy validate*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/bin/lsp-precheck"
        },
        {
          "if": "Bash(sf apex run *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf project retrieve *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf data query *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf project generate manifest *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf project deploy *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf org create *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(*sf-context plugin-install * --accept-proposed*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        },
        {
          "if": "Bash(sf project generate*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context scaffold-gate"
        },
        {
          "if": "Bash(sf template generate project*)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context scaffold-gate"
        }
      ],
      "matcher": "Bash"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
        }
      ],
      "matcher": "Edit|Write|MultiEdit"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context record-skill-dispatch"
        },
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture skill_dispatched"
        }
      ],
      "matcher": "Skill"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture agent_dispatched"
        }
      ],
      "matcher": "Task|Agent"
    }
  ],
  "SessionEnd": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-flush"
        }
      ],
      "matcher": ""
    }
  ],
  "PostToolUse": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-bash"
        }
      ],
      "matcher": "Bash"
    },
    {
      "hooks": [
        {
          "if": "Edit(force-app/**)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
        },
        {
          "if": "Write(force-app/**)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
        },
        {
          "if": "MultiEdit(force-app/**)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
        }
      ],
      "matcher": "Edit|Write|MultiEdit"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context resolution-trace"
        }
      ],
      "matcher": "Skill"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-ask-question"
        }
      ],
      "matcher": "AskUserQuestion"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture mcp_tool_used success"
        }
      ],
      "matcher": "mcp__.*"
    }
  ],
  "StopFailure": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture exception api_error"
        }
      ],
      "matcher": ""
    }
  ],
  "SessionStart": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context detect",
          "statusMessage": "Loading local Salesforce project context…"
        },
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture session_start"
        }
      ],
      "matcher": "*"
    }
  ],
  "UserPromptSubmit": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context prompt-dispatch"
        }
      ]
    }
  ],
  "PostToolUseFailure": [
    {
      "hooks": [
        {
          "if": "Bash(sf project deploy *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-deploy-failure"
        },
        {
          "if": "Bash(sf apex run test *)",
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-test-failure"
        },
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture command_invoked failure"
        }
      ],
      "matcher": "Bash"
    },
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture mcp_tool_used failure"
        }
      ],
      "matcher": "mcp__.*"
    }
  ],
  "UserPromptExpansion": [
    {
      "hooks": [
        {
          "type": "command",
          "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context prompt-dispatch"
        }
      ]
    }
  ]
}

Saved declaration

{
  "name": "salesforce-development",
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context feedback-nudge"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "hooks": [
          {
            "if": "Bash(sf *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context cli-update-notice"
          },
          {
            "if": "Bash(sf project deploy *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context verify-org"
          },
          {
            "if": "Bash(sf project delete *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context verify-org"
          },
          {
            "if": "Bash(sf project deploy start*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate prod-check"
          },
          {
            "if": "Bash(sf project deploy quick*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate prod-check"
          },
          {
            "if": "Bash(sf project delete*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate destructive"
          },
          {
            "if": "Bash(sf project deploy start*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/bin/lsp-precheck"
          },
          {
            "if": "Bash(sf project deploy validate*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/bin/lsp-precheck"
          },
          {
            "if": "Bash(sf apex run *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf project retrieve *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf data query *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf project generate manifest *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf project deploy *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf org create *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(*sf-context plugin-install * --accept-proposed*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          },
          {
            "if": "Bash(sf project generate*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context scaffold-gate"
          },
          {
            "if": "Bash(sf template generate project*)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context scaffold-gate"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context skills-first-advisory"
          }
        ],
        "matcher": "Edit|Write|MultiEdit"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context record-skill-dispatch"
          },
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture skill_dispatched"
          }
        ],
        "matcher": "Skill"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture agent_dispatched"
          }
        ],
        "matcher": "Task|Agent"
      }
    ],
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-flush"
          }
        ],
        "matcher": ""
      }
    ],
    "PostToolUse": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-bash"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "if": "Edit(force-app/**)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
          },
          {
            "if": "Write(force-app/**)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
          },
          {
            "if": "MultiEdit(force-app/**)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-deploy-gate auto-deploy"
          }
        ],
        "matcher": "Edit|Write|MultiEdit"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context resolution-trace"
          }
        ],
        "matcher": "Skill"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-ask-question"
          }
        ],
        "matcher": "AskUserQuestion"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture mcp_tool_used success"
          }
        ],
        "matcher": "mcp__.*"
      }
    ],
    "StopFailure": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture exception api_error"
          }
        ],
        "matcher": ""
      }
    ],
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context detect",
            "statusMessage": "Loading local Salesforce project context…"
          },
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture session_start"
          }
        ],
        "matcher": "*"
      }
    ],
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context prompt-dispatch"
          }
        ]
      }
    ],
    "PostToolUseFailure": [
      {
        "hooks": [
          {
            "if": "Bash(sf project deploy *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-deploy-failure"
          },
          {
            "if": "Bash(sf apex run test *)",
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context post-test-failure"
          },
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture command_invoked failure"
          }
        ],
        "matcher": "Bash"
      },
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context telemetry-capture mcp_tool_used failure"
          }
        ],
        "matcher": "mcp__.*"
      }
    ],
    "UserPromptExpansion": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/sf-context prompt-dispatch"
          }
        ]
      }
    ]
  },
  "author": {
    "url": "https://github.com/forcedotcom/sf-skills",
    "name": "Salesforce"
  },
  "skills": "./skills/",
  "license": "Apache-2.0",
  "version": "2.5.0",
  "commands": "./commands/",
  "homepage": "https://github.com/forcedotcom/sf-skills/tree/main/plugins/builder/salesforce-development",
  "keywords": [
    "salesforce",
    "apex",
    "flow",
    "soql",
    "metadata",
    "deploy"
  ],
  "repository": "https://github.com/forcedotcom/sf-skills.git",
  "userConfig": {
    "ui_mode": {
      "type": "string",
      "title": "Presentation mode",
      "default": "full",
      "options": [
        "full",
        "plain",
        "off"
      ],
      "description": "Ambient UI, including answers to natural-language status, orientation, and capability questions: full (default) signature banner and graded nudge, plain accessible semantic text (no color or glyphs) for status and orientation, or off (silent for all three). Slash commands and safety guidance remain available in every mode."
    },
    "plugin_match_sensitivity": {
      "type": "string",
      "title": "Plugin recommendation",
      "default": "standard",
      "options": [
        "off",
        "low",
        "standard",
        "high"
      ],
      "description": "How readily this plugin proposes an uninstalled Salesforce plugin matching your task: off (never), low, standard (default), or high. For a custom numeric threshold (1.0-10.0), set it from within a session with /salesforce-development:plugin-recommendations."
    }
  },
  "description": "Build Salesforce apps and agents using these core building blocks: metadata, Apex, deploy/retrieve, security, reporting, and generated installed-versus-available capability discovery.",
  "displayName": "Salesforce Development",
  "dependencies": []
}

plugin.json observed Nov 6, 2026 · 10:39 UTC. Manifest source ↗

Catalog declarations and available plugin.json metadata are saved. Referenced skills and executable source files are not downloaded or tested. Missing components in a manifest do not prove that the plugin has none.

Installation instructions

Official

/plugin install salesforce-development@claude-plugins-official

Claude Code installation documentation

Technical details
Sources
Claude Marketplace · Official
First seen
Oct 3, 2026 · 21:29 UTC
Last seen
Nov 8, 2026 · 00:00 UTC
Latest observed change
Oct 27, 2026 · 18:00 UTC
Collection status
Listed
Reported installs
664
Source badge
Anthropic verified, as displayed by Claude Marketplace.

Installation counts are source-reported, not independently verified active users. Observation dates are not release dates.

Download plugin data (JSON)

Plugin history: served from cache. Prepared . Refreshed when catalog data changes or after 6 hours. Your account and Follow status are live.