-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Problem
The current approach of symlinking the entire claude-user-config directory has several issues:
- Claude Code creates
~/.claude/as a real directory first, preventing the symlink from being created - Relative path symlinks (e.g.,
CLAUDE.md -> ../AIRULES.md) break after deployment - The
.gitignorebecomes complex due to excluding Claude Code's dynamic files
Solution
Replace the directory-level symlink with individual file symlinks.
New Directory Structure
~/dotfiles/
AIRULES.md # Common AI rules (existing)
rules/ # Rules directory (existing)
claude/ # Renamed from claude-user-config
.mcp.json # MCP server configuration
settings.json # Claude Code settings
deploy.sh Changes
# Claude Code settings
mkdir -p "$HOME/.claude"
ln -fvns "$DOTPATH/claude/.mcp.json" "$HOME/.claude/.mcp.json"
ln -fvns "$DOTPATH/claude/settings.json" "$HOME/.claude/settings.json"
ln -fvns "$DOTPATH/AIRULES.md" "$HOME/.claude/CLAUDE.md"
ln -fvns "$DOTPATH/rules" "$HOME/.claude/rules"Benefits
- No more
.gitignoreneeded (dynamic files stay in untracked~/.claude/) - No more relative path issues (using absolute paths for symlinks)
- Works even when Claude Code creates the directory first
- Simpler structure
Implementation Steps
- Rename
claude-user-config/toclaude/ - Remove
claude/CLAUDE.mdsymlink - Remove
claude/rulessymlink - Remove
claude/.gitignore - Update
deploy.shwith individual file symlinks - Run
deploy.shand verify - Remove
~/AIRULES.md(stray file created by broken symlink)
Verification
# Check symlinks
ls -la ~/.claude/CLAUDE.md
ls -la ~/.claude/rules
ls -la ~/.claude/.mcp.json
ls -la ~/.claude/settings.json
# Verify targets
readlink ~/.claude/CLAUDE.md # -> /Users/ikuwow/dotfiles/AIRULES.md
readlink ~/.claude/rules # -> /Users/ikuwow/dotfiles/rulesReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels