afv-library/plugins/builder/salesforce-development/docs/configuration.md

71 lines
2.8 KiB
Markdown
Raw Normal View History

# 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](../README.md#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:
```bash
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`:
```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
`production``sandbox` 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.