# Slash-command guide
## Scope
Defines the shared slash-command grammar and runtime selection helpers.
## Where to look
| Built-ins, registry, parsing, Fast arguments | `mod.rs` |
| Model selection, runtime refresh, logout outcomes | `runtime.rs` |
| Rewind argument regression tests | `rewind.rs` |
## Local rules
- `parse_slash_command` distinguishes empty input, ordinary prompts, built-ins, and unknown slash commands. Preserve that distinction in Mission Control.
- Keep names/descriptions and registry entries together; do not add a caller-specific grammar for shared commands.
- `/settings` is a Mission Control editor command, not a service protocol or provider prompt. Keep parsing here; drafts and keys belong in `../tui/settings_editor.rs`, persistence in `../config/settings/editor.rs`.
- `/models` is retired; availability is in `/settings` → Models. `/model` selects only cached models; never refresh catalogs during opening or selection. Keep retired command names out of registry/help/autocomplete.
- `switch_model_selection` delegates catalog selection; `switch_shell_model` then refreshes the shared active provider/config/auth state.
- Keep logout outcomes explicit: removed credentials/configuration and missing entries are different results.
- `rewind.rs` is test-only coverage of checkpoint argument parsing, not rewind execution. Do not put filesystem restore logic there.
- Command messages remain local status. Route durable settings/session changes through their owners rather than turning command text into provider conversation items.