If you work across multiple projects with different rules, switching configurations manually is tedious. Automate it.
Manual Approach with Symlinks
#!/bin/bash
# switch-config.sh
CONFIG_DIR=~/.claude/configs
TARGET=${1:-default}
ln -sf "$CONFIG_DIR/$TARGET/settings.json" ~/.claude/settings.json
ln -sf "$CONFIG_DIR/$TARGET/CLAUDE.md" ./CLAUDE.md
echo "Switched to config: $TARGET"
# Set up config directories
mkdir -p ~/.claude/configs/{work,personal,client-acme}
Usage:
./switch-config.sh work
./switch-config.sh client-acme
What to Vary Per Config
- CLAUDE.md: different coding standards, frameworks, conventions
- settings.json: different permission levels, allowed tools, status line
- skills/: different automation workflows per project type
- rules/: different linting and review standards
ClaudeCTX Tool
ClaudeCTX wraps this pattern into a single command:
claudectx switch work
claudectx switch personal
Tip
Keep a default config that works for open-source and personal projects. Only create specialized configs when you actually need different rules.