file-suggestion
Set up fast file suggestions for Claude Code using ripgrep, jq, and fzf. Use this skill when users want to improve file autocomplete performance or add custom file suggestion behavior.
From corenpx claudepluginhub rbozydar/rbw-claude-code --plugin coreThis skill uses the workspace's default tool permissions.
scripts/file-suggestion.shFile Suggestion Setup
This skill helps you configure Claude Code's file suggestion feature with a custom script that uses ripgrep, jq, and fzf for fast fuzzy file matching.
Prerequisites
Install these tools before setup:
# Ubuntu/Debian
sudo apt install ripgrep jq fzf
# macOS
brew install ripgrep jq fzf
# Arch Linux
sudo pacman -S ripgrep jq fzf
Setup Steps
1. Create the Script
Create the file suggestion script at ~/.claude/file-suggestion.sh:
#!/bin/bash
# Custom file suggestion script for Claude Code
# Uses rg + fzf for fuzzy matching and symlink support
# Parse JSON input to get query
QUERY=$(jq -r '.query // ""')
# Use project dir from env, fallback to pwd
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-.}"
# cd into project dir so rg outputs relative paths
cd "$PROJECT_DIR" || exit 1
{
# Main search - respects .gitignore, includes hidden files, follows symlinks
rg --files --follow --hidden . 2>/dev/null
# Additional paths - include even if gitignored (uncomment and customize)
# [ -e .notes ] && rg --files --follow --hidden --no-ignore-vcs .notes 2>/dev/null
} | sort -u | fzf --filter "$QUERY" | head -15
2. Make It Executable
chmod +x ~/.claude/file-suggestion.sh
3. Configure Claude Code
Add this to your ~/.claude/settings.json:
{
"fileSuggestion": {
"type": "command",
"command": "~/.claude/file-suggestion.sh"
}
}
How It Works
The script:
- Receives JSON input with a
queryfield from Claude Code - Uses ripgrep (
rg --files) to list files fast, respecting.gitignore - Follows symlinks with
--followflag - Includes hidden files with
--hiddenflag - Fuzzy filters results using
fzf --filter - Returns top 15 matches sorted by relevance
Customization
Include Gitignored Paths
Uncomment and customize the additional paths section:
# Include .notes directory even if gitignored
[ -e .notes ] && rg --files --follow --hidden --no-ignore-vcs .notes 2>/dev/null
# Include vendor directory
[ -e vendor ] && rg --files --follow --hidden --no-ignore-vcs vendor 2>/dev/null
Exclude Patterns
Add ripgrep glob patterns to exclude files:
rg --files --follow --hidden \
--glob '!*.min.js' \
--glob '!*.map' \
--glob '!node_modules' \
. 2>/dev/null
Change Result Limit
Modify the head -15 to return more or fewer results:
# Return top 25 matches
... | head -25
Troubleshooting
Script Not Found
Ensure the path in settings.json matches your script location and uses ~ or absolute path.
No Results
Check that:
- ripgrep is installed:
which rg - fzf is installed:
which fzf - jq is installed:
which jq - Script is executable:
ls -la ~/.claude/file-suggestion.sh
Slow Performance
If you have a large repo:
- Ensure
.gitignoreexcludesnode_modules,dist, etc. - Add explicit
--glob '!pattern'exclusions for large directories
Template Script
A ready-to-use template is available at:
${CLAUDE_PLUGIN_ROOT}/skills/file-suggestion/scripts/file-suggestion.sh
Copy it to your ~/.claude/ directory and customize as needed.