Semantic code search. Use alongside grep - grep for exact strings, osgrep for concepts.
Finds code by meaning, not just exact strings. Use when you need to locate logic like "where do we validate user permissions" instead of guessing exact function names.
/plugin marketplace add Ryandonofrio3/osgrep/plugin install osgrep@osgrepThis skill is limited to using the following tools:
Finds code by meaning. When you'd ask a colleague "where do we handle auth?", use osgrep.
osgrep "where do we validate user permissions"
Returns ~10 results with code snippets (15+ lines each). Usually enough to understand what's happening.
ORCHESTRATION src/auth/handler.ts:45
Defines: handleAuth | Calls: validate, checkRole, respond | Score: .94
export async function handleAuth(req: Request) {
const token = req.headers.get("Authorization");
const claims = await validateToken(token);
if (!claims) return unauthorized();
const allowed = await checkRole(claims.role, req.path);
...
The snippet often has enough context. But if you need more:
# osgrep found src/auth/handler.ts:45-90 as ORCH
Read src/auth/handler.ts:45-120
Read the specific line range, not the whole file.
# Trace call graph (who calls X, what X calls)
osgrep trace handleAuth
# Skeleton of a huge file (to find which ranges to read)
osgrep skeleton src/giant-2000-line-file.ts
# Just file paths when you only need locations
osgrep "authentication" --compact
# 1. Find entry points
osgrep "where do requests enter the server"
# Review the ORCH results - code is shown
# 2. If you need deeper context on a specific function
Read src/server/handler.ts:45-120
# 3. Trace to understand call flow
osgrep trace handleRequest
If you see "Indexing" or "Syncing": STOP. Tell the user the index is building. Ask if they want to wait or proceed with partial results.