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": []
}