afv-library/plugins/builder/salesforce-development/docs/configuration.md
2026-08-10 16:05:50 +00:00

2.8 KiB

Configuration Reference

Advanced configuration for the salesforce-development plugin: ambient UI modes, the optional status line, and deploy/delete guard rails. Everyday usage only needs the Quick Start — start here if you want to customize the experience or understand a safety prompt.

Ambient UI Modes

Ambient SessionStart output is configured by plugin userConfig.ui_mode (transported to hooks as CLAUDE_PLUGIN_OPTION_UI_MODE):

Mode Ambient SessionStart and wayfinding
full (default) signature banner and evidence rail
compact one bounded project/stage/next line
plain semantic text without ANSI or journey glyphs
off hidden

NO_COLOR removes ANSI without changing mode. Explicit status, setup, discovery, safety advisories/gates, failures, and install guidance remain available in every mode.

Optional Main Status Line

You can opt in to a main status line showing your current project context. Copy the helper to a stable user path so plugin updates cannot invalidate the configured command:

mkdir -p "$HOME/.claude/statusline"
cp "${CLAUDE_PLUGIN_ROOT}/scripts/salesforce-statusline.py" \
  "$HOME/.claude/statusline/salesforce-development.py"

Then manually add this to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "python3 ~/.claude/statusline/salesforce-development.py"
  }
}

The plugin never edits or writes user settings — this is a manual, reversible opt-in. Remove the statusLine entry and copied file to opt out.

Guard Rails vs. Claude Code's Auto-Mode Classifier

This plugin's gates fire only on sf project deploy, sf project delete, and destructive-changes deploys — they never block read-only commands (sf org list/display, sf data query, sf project retrieve, source-tracking probes). Every gate emission is prefixed [salesforce-development · deploy-gate]. A denial on a read-only command with no such prefix is Claude Code's auto-mode classifier, not this plugin — a separate layer the plugin cannot rewrite. If reads get gated, the fix is to retarget a sandbox (the classifier reclassifies productionsandbox and the reads pass) or to allowlist them via /permissions. Routing around a denial by re-shaping the command defeats the control while technically satisfying it — don't.

Opt-In Auto-Deploy

Set SFDX_AUTO_DEPLOY=1 to have sf-deploy-gate auto-deploy push a saved force-app/** edit (Write/Edit/MultiEdit) to your default org automatically after each save. Off by default. It refuses to run against orgs classified production or unknown regardless of the flag — the same production guard rail above still applies.

LSP Scope

This plugin vendors the Apex + SOQL language servers only. The LWC language server is intentionally not bundled.