file-search
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.
Install
mkdir -p .claude/skills/file-search && curl -L -o skill.zip "https://mcp.directory/api/skills/download/6069" && unzip -o skill.zip -d .claude/skills/file-search && rm skill.zipInstalls to .claude/skills/file-search
About this skill
File Search Skill
Search code efficiently using ripgrep for text patterns and ast-grep for structural code patterns.
Purpose
The file-search skill provides access to two powerful search tools pre-installed in MassGen environments:
- ripgrep (rg): Ultra-fast text search with regex support for finding strings, patterns, and text matches
- ast-grep (sg): Syntax-aware structural search for finding code patterns based on abstract syntax trees
Use these tools to understand codebases, find usage patterns, analyze impact of changes, and locate specific code constructs. Both tools are significantly faster than traditional grep or find commands.
When to Use This Skill
Use the file-search skill when:
- Understanding a new codebase (finding entry points, key classes)
- Finding all usages of a function, class, or variable before refactoring
- Locating specific code patterns (error handling, API calls, etc.)
- Searching for security issues (hardcoded credentials, SQL queries, eval usage)
- Analyzing dependencies and imports
- Finding TODOs, FIXMEs, or code comments
Choose ripgrep for:
- Text-based searches (strings, comments, variable names)
- Fast, simple pattern matching across many files
- When the exact code structure doesn't matter
Choose ast-grep for:
- Structural code searches (function signatures, class definitions)
- Syntax-aware matching (understanding code semantics)
- Complex refactoring (finding specific code patterns)
Invoking Search Tools
In MassGen, use the execute_command tool to run ripgrep and ast-grep:
# Using ripgrep
execute_command("rg 'pattern' --type py src/")
# Using ast-grep
execute_command("sg --pattern 'class $NAME { $$$ }' --lang python")
Both tools are pre-installed in MassGen Docker containers and available via shell execution.
Targeting Your Searches
CRITICAL: Always start with targeted, narrow searches to avoid overwhelming results. Getting thousands of matches makes analysis impossible and wastes tokens.
These strategies apply to both ripgrep and ast-grep.
Scope-Limiting Strategies
Apply these strategies from the start to target searches effectively:
-
Specify File Types/Languages: Always filter by language
# Ripgrep rg "function" --type py --type js # AST-grep sg --pattern 'function $NAME($$$) { $$$ }' --lang js -
Target Specific Directories: Search in likely locations first
# Ripgrep rg "LoginService" src/services/ # AST-grep sg --pattern 'class LoginService { $$$ }' src/services/ -
Use Specific Patterns: Make patterns as specific as possible
# 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 -
Limit Result Count: Use head to cap results
# Ripgrep rg "import" --type py | head -20 rg "TODO" --count # AST-grep sg --pattern 'import $X from $Y' --lang js | head -20
Progressive Search Refinement
When exploring unfamiliar code, use this workflow:
Ripgrep example:
# 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/
AST-grep example:
# 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/
When You Get Too Many Results
If a search returns hundreds of matches (applies to both rg and sg):
- Add file type/language filters:
--type py(rg) or--lang python(sg) - Narrow directory scope: Search
src/instead of. - Make pattern more specific: Add context around the pattern
- Use word boundaries:
-wflag for whole words only (rg) - Pipe to head: Limit output with
| head -50 - Exclude test files:
--glob '!*test*'(rg) or avoid test directories (sg)
Example of refinement:
# 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/
How to Use
Ripgrep (rg)
# 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
AST-Grep (sg)
# 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/
Common Search Patterns
# 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 5
File Type Filters
Common ripgrep file types: py, js, ts, rust, go, java, c, cpp, html, css, json, yaml, md
Use --type-list to see all available types, or define custom types:
rg --type-add 'config:*.{yml,yaml,toml,ini}' --type config "pattern"
Performance Tips
See "Targeting Your Searches" section for comprehensive strategies. Key tips:
# 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
Best Practices
- Start Narrow, Then Broaden: Use specific patterns, file types, and directory scope from the start
- Count Before Viewing: Use
--countor| head -Nto preview result volume - Always Specify File Types: Use
--type(rg) or--lang(sg) to filter by language - Exclude Common Noise: Add
--glob '!{node_modules,venv,.git,dist,build}'habitually - Combine Tools: Use
rgfor text patterns,sgfor structural code patterns - Use Context Strategically: Add
-C Nfor surrounding lines, but be mindful of output volume
Troubleshooting
- No matches found: Check file type filters, try
-ifor case-insensitive, search partial pattern first - Too slow: Exclude directories with
--glob, limit file types with--type, narrow search path - AST-grep issues: Verify
--langis correct, try simpler pattern, usergto verify code exists
Resources
More by massgen
View all skills by massgen →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversUnlock seamless Figma to code: streamline Figma to HTML with Framelink MCP Server for fast, accurate design-to-code work
Official Laravel-focused MCP server for augmenting AI-powered local development. Provides deep context about your Larave
Safely connect cloud Grafana to AI agents with MCP: query, inspect, and manage Grafana resources using simple, focused o
Empower your workflows with Perplexity Ask MCP Server—seamless integration of AI research tools for real-time, accurate
Boost your productivity by managing Azure DevOps projects, pipelines, and repos in VS Code. Streamline dev workflows wit
Boost AI coding agents with Ref Tools—efficient documentation access for faster, smarter code generation than GitHub Cop
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.