agentleFS
brettatomsbrettatoms/agent-skills/code-search/SKILL.md

code-search

Skill3 starsChanged 10 months agoMITView on GitHub

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.

  • Reads credentials
  • Installs packages

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use ripgrep (rg) for searching patterns inside file contents.

    line 9
  2. Very specific:

    If rg is not installed, recommend the user install it:

    line 13
  3. Distinctive:

    Start with file listing, then search with context:

    line 177
  4. Very specific:

    Use -m N: - Stop after N matches per file

    line 226
  5. Distinctive:

    Parallel searches: - Run independent rg commands in parallel

    line 227

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

TaskCommand
Search contentrg "pattern"
List matching filesrg -l "pattern"
Search with contextrg -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
  • \b for word boundaries
  • ^ and $ for line start/end

Performance Tips

  1. Use -t type filters - Much faster than searching all files
  2. Use -l first - Cheaper than showing content
  3. Specify directory - rg "pattern" src/ narrows scope
  4. Use -m N - Stop after N matches per file
  5. Parallel searches - Run independent rg commands in parallel
  6. 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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.