Item 14: Manage agents, skills, hooks, and permissions through their / interfaces, not config files
Verified with Claude Code 2.1.153
Stability: stable
Status: current
Why this matters
Claude Code exposes interactive / commands for nearly every configurable surface: /agents for subagents, /skills for skill visibility and overrides, /hooks for lifecycle hooks, /permissions for tool allow/ask/deny rules, /mcp for MCP server connections and OAuth, /plugin for plugin management, /memory for CLAUDE.md and auto-memory, /config for the rest. Each one shows current state, validates input, and surfaces options the underlying JSON doesn’t make obvious — like which scope a rule lives in, which overrides apply, and which entries are active versus orphaned.
Hand-editing the config files works and is sometimes faster for known changes. But for anything you’re not 100% sure about — field name, valid value, scope precedence, whether a setting is currently overridden by a higher-priority file — the interactive UIs are the safer path. They prevent the silent-failure mode where a typo in settings.json causes Claude Code to load partial configuration without telling you.
/doctor is the diagnostic counterpart. When something configuration-related is misbehaving, /doctor is the first reach, not the last. It catches install issues, settings problems, and common misconfigurations with explicit status icons and a f keystroke to apply fixes.
What to avoid
Memorizing JSON field names you could look up by pressing /permissions and tabbing through. Editing a settings file when you’re not sure which scope’s settings file actually owns the rule — the UIs make precedence visible; the files don’t. Diagnosing a broken configuration by reading source code when /doctor would have told you the answer in a second.
What to do instead
Default to the slash command for the surface you’re touching. /permissions for permission rules. /agents for subagents. /hooks for hooks. /skills to see what’s loaded and adjust visibility. /mcp to add or reauthorize a server. /memory to audit CLAUDE.md and auto-memory together. Drop down to JSON editing when you know the change you want and the UI doesn’t expose it.
/doctor belongs in your routine when anything feels off — slow startup, missing skills, unexpected permission prompts, a hook that won’t fire. It’s faster than triaging by inspection.
Example
Same change, UI versus file edit.
> /permissions
[interactive picker: scope, rule type (allow/ask/deny), pattern; saves to
the correct settings file with no risk of mistyping the key name]
// settings.local.json — fine if you know the schema
{
"permissions": {
"allow": ["Bash(npm test:*)"]
}
}
Adding an MCP server:
> /mcp
[picker for transport, command, env vars, OAuth flow if needed; rule
lands in the right scope file]
Diagnosing a misbehaving setup:
> /doctor
✓ Installation
✓ Auth
✗ Hooks — PreToolUse hook for "Bash" command exited non-zero
✓ MCP servers
Press f to attempt fixes for failed checks.
Things to Remember
/agents,/skills,/hooks,/permissions,/mcp,/plugin,/memoryare interactive UIs over the underlying configs- The UIs show current state, validate input, and surface options you’d miss editing JSON
- Editing JSON is still fine — but reach for the UI when uncertain about field names or precedence
- Use
/doctorto diagnose configuration problems before going spelunking in settings