Loading...
Loading...
This skill should be used when agents need to search codebases for text patterns or structural code patterns. Provides fast search using ripgrep for text and ast-grep for syntax-aware code search.
npx skill4agent add massgen/massgen file-searchgrepfindexecute_command# Using ripgrep
execute_command("rg 'pattern' --type py src/")
# Using ast-grep
execute_command("sg --pattern 'class $NAME { $$$ }' --lang python")# Ripgrep
rg "function" --type py --type js
# AST-grep
sg --pattern 'function $NAME($$$) { $$$ }' --lang js# Ripgrep
rg "LoginService" src/services/
# AST-grep
sg --pattern 'class LoginService { $$$ }' src/services/# Ripgrep: BAD - too broad
rg "user"
# Ripgrep: GOOD - more specific
rg "class.*User.*Service" --type py
# AST-grep: BAD - too broad
sg --pattern '$X'
# AST-grep: GOOD - more specific
sg --pattern 'class $NAME extends UserService { $$$ }' --lang js# Ripgrep
rg "import" --type py | head -20
rg "TODO" --count
# AST-grep
sg --pattern 'import $X from $Y' --lang js | head -20# Step 1: Count matches to assess scope
rg "pattern" --count --type py
# Step 2: If too many results, add more filters
rg "pattern" --type py src/ --glob '!tests'
# Step 3: Show limited results to inspect
rg "pattern" --type py src/ | head -30
# Step 4: Once confirmed, get full results or target further
rg "pattern" --type py src/specific_module/# Step 1: Assess scope with broad structural pattern
sg --pattern 'function $NAME($$$) { $$$ }' --lang js | head -10
# Step 2: If too many results, narrow to specific directory
sg --pattern 'function $NAME($$$) { $$$ }' --lang js src/
# Step 3: Make pattern more specific
sg --pattern 'async function $NAME($$$) { $$$ }' --lang js src/
# Step 4: Target exact location
sg --pattern 'async function $NAME($$$) { $$$ }' --lang js src/services/rgsg--type py--lang pythonsrc/.-w| head -50--glob '!*test*'# Step 1: Too broad (10,000+ matches)
rg "error"
# Step 2: Add file type (1,000 matches)
rg "error" --type py
# Step 3: Add directory scope (200 matches)
rg "error" --type py src/
# Step 4: Make pattern specific (20 matches)
rg "raise.*Error" --type py src/
# Step 5: Target exact location (5 matches)
rg "raise.*Error" --type py src/services/# Basic text search
rg "pattern" --type py --type js
# Common flags
-i # Case-insensitive
-w # Match whole words only
-l # Show only filenames
-n # Show line numbers
-C 3 # Show 3 lines of context
--count # Count matches per file
--glob '!dir' # Exclude directory
# Examples
rg "function.*login" --type js src/
rg -i "TODO" --count
rg "auth|login|session" --type py# Structural code search
sg --pattern 'function $NAME($$$) { $$$ }' --lang js
# Metavariables
$VAR # Matches single AST node
$$$ # Matches zero or more nodes
# Examples
sg --pattern 'class $NAME { $$$ }' --lang python
sg --pattern 'import $X from $Y' --lang js
sg --pattern 'async function $NAME($$$) { $$$ }' src/# Security issues
rg -i "password\s*=\s*['\"]" --type py
rg "\beval\(" --type js
# TODOs and comments
rg "TODO|FIXME|HACK"
# Code structures
sg --pattern 'class $NAME { $$$ }' --lang python
sg --pattern 'try { $$$ } catch ($E) { $$$ }' --lang js
# Dependencies
rg "from requests import" --type py
rg "require\(['\"]" --type js
# Refactoring
rg "\.old_method\(" --type py
rg "@deprecated" -A 5pyjstsrustgojavaccpphtmlcssjsonyamlmd--type-listrg --type-add 'config:*.{yml,yaml,toml,ini}' --type config "pattern"# Limit scope to specific directories
rg "pattern" src/
# Filter by file type
rg "pattern" --type py --type js
# Exclude large directories
rg "pattern" --glob '!{node_modules,venv,.git}'
# Use fixed strings (no regex) for speed
rg -F "exact string"
# Count before viewing full results
rg "pattern" --count --type py--count| head -N--type--lang--glob '!{node_modules,venv,.git,dist,build}'rgsg-C N-i--glob--type--langrg