Claude-skill-registry 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.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/file-suggestion" ~/.claude/skills/majiayu000-claude-skill-registry-file-suggestion && rm -rf "$T"
manifest:
skills/data/file-suggestion/SKILL.mdsource content
File 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
field from Claude Codequery - Uses ripgrep (
) to list files fast, respectingrg --files.gitignore - Follows symlinks with
flag--follow - Includes hidden files with
flag--hidden - 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
excludes.gitignore
,node_modules
, etc.dist - Add explicit
exclusions for large directories--glob '!pattern'
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.