code-search
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.
What this skill does
# 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:
```bash
# 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
```bash
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
```bash
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
```bash
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
```bash
rg "pattern" src/ # Search specific directory
rg "pattern" file.clj # Search specific file
```
### Case Sensitivity
```bash
rg -i "pattern" # Case insensitive
rg -s "pattern" # Case sensitive (default)
rg -S "pattern" # Smart case (insensitive if all lowercase)
```
### Line Numbers
```bash
rg -n "pattern" # Show line numbers (default)
rg -N "pattern" # Hide line numbers
```
### Multiline
```bash
rg -U "pattern" # Multiline mode (pattern can span lines)
rg -U "start.*?end" # Non-greedy multiline match
```
### Limiting Output
```bash
rg -m 5 "pattern" # Max 5 matches per file
rg "pattern" | head -20 # First 20 lines of output
```
## Common Search Patterns
### Find Function Definitions
```bash
# 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
```bash
# 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
```bash
# 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
```bash
rg -i "(TODO|FIXME|HACK|XXX)"
rg -i "TODO" -C 1
```
### Find Configuration Values
```bash
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:
```bash
# 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)
```bash
# Find definition
rg -t clojure "\(defn\s+create-user" -A 10
# Find usages
rg "create-user" -C 2
```
### 3. Exclude Tests/Vendor
```bash
rg "pattern" -g "!*test*" -g "!vendor/*" -g "!node_modules/*"
```
### 4. Multiple File Types
```bash
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
```bash
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
```
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.