Use when adding new error messages to React, or seeing "unknown error code" warnings.
npx skills add brettatoms/agent-skills --skill "code-search"
Install specific skill from multi-skill repository
# Description
Search for patterns inside file contents using ripgrep (rg). Use when searching for code patterns, finding function definitions, locating usages, or when the user asks to search/grep content inside files.
# SKILL.md
name: code-search
description: Search for patterns inside file contents using ripgrep (rg). Use when searching for code patterns, finding function definitions, locating usages, or when the user asks to search/grep content inside files.
allowed-tools: Bash, Read, Task
Code Search Skill
Use ripgrep (rg) for searching patterns inside file contents. For finding files by name, use the file-nav skill instead.
Prerequisites
If rg is not installed, recommend the user install it:
# Arch Linux
sudo pacman -S ripgrep
# Ubuntu/Debian
sudo apt install ripgrep
# macOS
brew install ripgrep
# Cargo
cargo install ripgrep
Quick Reference
| Task | Command |
|---|---|
| Search content | rg "pattern" |
| List matching files | rg -l "pattern" |
| Search with context | rg -C 3 "pattern" |
Core rg Options
Output Control
rg "pattern" # Show matching lines (default)
rg -l "pattern" # List files only (--files-with-matches)
rg -c "pattern" # Count matches per file
rg -o "pattern" # Only show matched text
Context Lines
rg -A 5 "pattern" # 5 lines after
rg -B 5 "pattern" # 5 lines before
rg -C 5 "pattern" # 5 lines before and after
Filtering by File Type
rg -t clojure "pattern" # Only Clojure files
rg -t js "pattern" # Only JavaScript files
rg -t py "pattern" # Only Python files
rg -t rust "pattern" # Only Rust files
rg -T test "pattern" # Exclude test files
rg -g "*.clj" "pattern" # Glob filter
rg -g "!*.test.*" "pat" # Exclude glob pattern
Scope
rg "pattern" src/ # Search specific directory
rg "pattern" file.clj # Search specific file
Case Sensitivity
rg -i "pattern" # Case insensitive
rg -s "pattern" # Case sensitive (default)
rg -S "pattern" # Smart case (insensitive if all lowercase)
Line Numbers
rg -n "pattern" # Show line numbers (default)
rg -N "pattern" # Hide line numbers
Multiline
rg -U "pattern" # Multiline mode (pattern can span lines)
rg -U "start.*?end" # Non-greedy multiline match
Limiting Output
rg -m 5 "pattern" # Max 5 matches per file
rg "pattern" | head -20 # First 20 lines of output
Common Search Patterns
Find Function Definitions
# Clojure
rg -t clojure "\(defn\s+my-function"
rg -t clojure "\(defn-?\s+my-function" # defn or defn-
# JavaScript/TypeScript
rg -t js "function\s+myFunction|const\s+myFunction\s*="
rg -t ts "function\s+myFunction"
# Python
rg -t py "def\s+my_function"
# Go
rg -t go "func\s+MyFunction"
# Rust
rg -t rust "fn\s+my_function"
Find Class/Type Definitions
# Clojure defrecord/deftype
rg -t clojure "\(def(record|type)\s+MyType"
# TypeScript interface/type
rg -t ts "(interface|type)\s+MyType"
# Python class
rg -t py "class\s+MyClass"
# Java/Kotlin class
rg -t java "class\s+MyClass"
Find Usages/References
# Find all uses of a symbol
rg -C 2 "my-function"
# Word boundary match (avoid partial matches)
rg -w "user"
# Find require/import statements
rg "\[my\.namespace" -t clojure
rg "import.*MyModule" -t js
rg "from.*import.*my_func" -t py
Find TODO/FIXME Comments
rg -i "(TODO|FIXME|HACK|XXX)"
rg -i "TODO" -C 1
Find Configuration Values
rg "database|connection" -g "*.{yml,yaml,json,edn}"
rg "password|secret|key" -g "*.env*"
Search Strategies
1. Broad to Narrow
Start with file listing, then search with context:
# Step 1: Find files containing pattern
rg -l "authentication"
# Step 2: Search specific file with context
rg -C 5 "authentication" src/auth.clj
2. Definition + Usages (run in parallel)
# Find definition
rg -t clojure "\(defn\s+create-user" -A 10
# Find usages
rg "create-user" -C 2
3. Exclude Tests/Vendor
rg "pattern" -g "!*test*" -g "!vendor/*" -g "!node_modules/*"
4. Multiple File Types
rg "pattern" -t clojure -t edn
rg "pattern" -g "*.{ts,tsx,js,jsx}"
Regex Tips
\s+for whitespace\(for literal parentheses.*?for non-greedy matching[^)]+for anything except closing paren\{and\}for literal braces(?:...)for non-capturing groups\bfor word boundaries^and$for line start/end
Performance Tips
- Use
-t typefilters - Much faster than searching all files - Use
-lfirst - Cheaper than showing content - Specify directory -
rg "pattern" src/narrows scope - Use
-m N- Stop after N matches per file - Parallel searches - Run independent rg commands in parallel
- Exclude directories -
-g "!node_modules/*"etc.
Advanced Options
rg --hidden "pattern" # Include hidden files
rg --no-ignore "pattern" # Don't respect .gitignore
rg -uuu "pattern" # Unrestricted (all files)
rg --json "pattern" # JSON output for parsing
rg -p "pattern" | less -R # Pager with color
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.