# Search Code

> Search for code patterns in Syncpack. Use when finding symbols, implementations, or understanding how code is used. Covers ast-grep for Rust and grep/rg for other cases.

- Skill: `jamiemason/search-code` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jamiemason/search-code`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jamiemason/search-code/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jamiemason (https://skillmd.com/u/jamiemason)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jamiemason/search-code

---


# Search Code

Guide for searching the Syncpack codebase effectively.

## Golden Rule

**Use `ast-grep` for Rust files** — it filters out comments, strings, and docs.

## Quick Reference

| Looking for...                    | Use         |
| --------------------------------- | ----------- |
| Rust symbols, patterns, structs   | `ast-grep`  |
| Multiple file types               | `grep`/`rg` |
| Content in comments intentionally | `grep`/`rg` |
| Non-Rust files (JSON, MD, TOML)   | `grep`/`rg` |

## ast-grep Examples

```bash
# Find struct definitions
ast-grep -p 'pub struct $NAME' src/

# Find function calls
ast-grep -p 'Specifier::new' src/

# Find enum variants
ast-grep -p 'pub enum $NAME' src/

# Find impl blocks
ast-grep -p 'impl $TYPE' src/

# Find specific method definitions
ast-grep -p 'pub fn run($$$) -> i32' src/

# Find match expressions
ast-grep -p 'match $EXPR { $$$ }' src/
```

## Pattern Syntax

| Pattern | Matches                                      |
| ------- | -------------------------------------------- |
| `$NAME` | Single identifier                            |
| `$$$`   | Zero or more items (arguments, fields, etc.) |
| `$_`    | Any single expression                        |

## When to Use grep/rg

```bash
# Search across file types
rg "TODO" --type rust --type md

# Search in comments (ast-grep ignores these)
rg "FIXME" src/

# Search non-Rust files
rg "version" Cargo.toml

# Case-insensitive search
rg -i "error" src/
```

## Common Searches

### Find where a type is used

```bash
ast-grep -p 'Context' src/
```

### Find all InstanceState assignments

```bash
ast-grep -p 'InstanceState::valid' src/
ast-grep -p 'InstanceState::fixable' src/
ast-grep -p 'InstanceState::unfixable' src/
```

### Find test files

```bash
find src -name '*_test.rs'
```

### Find command implementations

```bash
ast-grep -p 'pub fn run($$$) -> i32' src/commands/
```

## Tips

- Start broad, then narrow with more specific patterns
- Use `ast-grep` output to find the file, then `read_file` to understand context
- Chain searches: find the type, then find where it's constructed

